Есть конструкция
if ( rawCaption[nPos+1] == '#')
в il-е она выглядит как
IL_0020: ldarg.0
IL_0021: ldloc.0
IL_0022: ldc.i4.1
IL_0023: add
IL_0024: callvirt instance char [mscorlib]System.String::get_Chars(int32)
IL_0029: ldc.i4.s 35
IL_002b: bne.un.s IL_0045
Вопрос номер раз: почему произощло автоувеличение размерной переменной?
2: как я могу продотвратить подобный произвол компилятора?
Заранее спасибо.
P.s. Есть предположение, что компилятор сначала вычислил значение переменной, а потом сделал копию для функции, но тогда остается в силе 2й вопрос..