對不起,標題很難說。請看我的例子。
GetUser1和GetUser2之間有什麼區別嗎?創建對象之間有任何區別,然後返回它或直接創建並返回它?
class Program
{
static void Main(string[] args)
{
GetUser1();
GetUser2();
}
private static User GetUser1()
{
return new User
{
Name = "Hello"
};
}
private static User GetUser2()
{
User user = new User
{
Name = "Hello"
};
return user;
}
}
public class User
{
public string Name { get; set; }
}
一位朋友說:沒有區別。
但我說的是;兩種方法是有區別的。 GetUser2正在創建一個不需要的新對象。並且GetUser2有輕微(很小)的性能錯誤,因爲你正在創建一個新的對象......那是什麼原因?我怎樣才能研究這個話題?
UPDATE
非常感謝你的答案...所以我繼續問;
如果GetUser1和GetUser2之間沒有區別,爲什麼roslyn編譯這樣的代碼(link);
private static User GetUser1()
{
return new User {
Name = "Hello"
};
}
不,沒有區別。 GetUser1只是GetUser2的一個更簡潔的版本。 –
不,沒有差別因爲您在兩種方法 –
中都創建了一個新實例。事實上,我敢打賭,CIL對於兩者都是相同的。 –