[英]What is the difference between following cases?
代碼在C#中
情況1
var p = new Person();
p = getPerson(p);
情況二
var p = new Person();
getPerson(p);
在上述情況下,是否會消耗額外的內存?
假設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
從評估堆棧的頂部彈出當前值,並將其存儲在指定索引處的本地變量列表中。
如果修補了操作碼,則填充空間。 盡管可能消耗處理周期,但沒有執行有意義的操作。
總之,擔心其他事情
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.