2013-04-09 2 views

ответ

3
string a = "Test"; 

Вы создаете ссылку под названием a и его наведение на "Test" объекта в памяти.

string b = "test 2"; 

Вы создаете ссылку под названием b и его наведение на “test 2” объекта в памяти.

string c = a + b; 

Вы выделения нового адреса памяти для a + b (и этот процесс использует String.Concat метод.), Потому что строки immutable в .NET. А затем c ссылка на этот новый адрес памяти.

Вот код IL этого;

IL_0000: nop 
    IL_0001: ldstr  "Test" 
    IL_0006: stloc.0 
    IL_0007: ldstr  "test 2" 
    IL_000c: stloc.1 
    IL_000d: ldloc.0 
    IL_000e: ldloc.1 
    IL_000f: call  string [mscorlib]System.String::Concat(string, 
                   string) 
    IL_0014: stloc.2 
    IL_0015: ldloc.2 

stloc.0 используется, в котором хранится значение на вершине стека оценки в локальной памяти, слот 0.

ldstr команд используется, чтобы загрузить строку в памяти или оценки стека. Необходимо загрузить значения в оценочный стек до того, как они будут использованы.

Инструкция ldloc является инструкцией по нагрузке. Ldloc помещает значение локальной переменной в стек.

Смежные вопросы