Предполагая, что getPerson
просто изменяет свойства Person
, и есть 2 различных метода, один из которых возвращает человека, а другой - недействительный, в этом коде нет заметной разницы
static void Main(string[] args)
{
// example 1
var p = new Person();
p = getPerson1(p);
// example 2
var p2 = new Person();
getPerson2(p2);
}
Пример 1
IL_0001: newobj instance void ConsoleApp8.Person::.ctor()
IL_0006: stloc.0 // p
// [33 10 - 33 28]
IL_0007: ldloc.0 // p
IL_0008: call class ConsoleApp8.Person ConsoleApp8.Program::getPerson1(class ConsoleApp8.Person)
IL_000d: stloc.0 // p
Пример 2
IL_000e: newobj instance void ConsoleApp8.Person::.ctor()
IL_0013: stloc.1 // p2
// [36 4 - 36 19]
IL_0014: ldloc.1 // p2
IL_0015: call void ConsoleApp8.Program::getPerson2(class ConsoleApp8.Person)
IL_001a: nop
Поле OpCodes.Stloc
Извлекает текущее значение из верхней части стека оценки и сохраняет
это в списке локальных переменных по указанному индексу.
OpCodes.Nop Field
Заполняет пространство, если исправлены коды операций. Нет значимой операции
выполняется, хотя цикл обработки можно использовать.
Короче, беспокойся о других вещах