以下兩個代碼片段有什麼區別?C#輸出參數
public void foo(out classA x)
{
y = new classA();
x = y;
}
與第二:
public void foo(out classA x)
{
classA y;
x = y;
}
這是真的,第二個片段是危險的,因爲x
現在有一個參考這個地方y
,退出foo
後,這可能是已經死了嗎?
爲什麼我們一般使用「新」?
我有點困惑,因爲在C++中,如果x
在第二個片段將是一個指針,語句x = y
甚至不會因爲y
編譯不是指針。
它們都沒有編譯。 –
第二個是不危險的。這是沒用的,因爲你永遠不會爲y賦值。 – JohnFx
在C#中,類總是分配在堆上,所以你不必擔心。 – Gabe