[英]Diferences between object instantiation in C#: storing objects in references vs. calling a method directly
我對C#中的對象聲明有疑問。 我用這個例子解釋我可以做到這一點:
MyObject obj = New MyObject();
int a = obj.getInt();
或者我可以做到這一點
int a = new MyObject().getInt();
結果是相同的,但是這些聲明之間是否存在任何區別? (沒有語法)
謝謝。
這不是聲明:它是類實例化。
兩者之間沒有實際的區別:都是關於可讀性和您自己的編碼風格的。
我要補充一點,在少數情況下,您需要聲明對某個對象的引用:這些對象是IDisposable
。
例如:
// WRONG! Underlying stream may still be locked after reading to the end....
new StreamReader(...).ReadToEnd();
// OK! Store the whole instance in a reference so you can dispose it when you
// don't need it anymore.
using(StreamReader r = new StreamReader(...))
{
} // This will call r.Dispose() automatically
正如一些評論所補充的,在很多情況下,實例化一個類並將對象存儲在引用(變量)中將是更好/最優的, 但是對於您的簡單示例,我相信差異還不夠,並且仍然是編碼風格/可讀性的問題 。
主要是語法。
主要區別在於您不能在第二個示例中使用MyObject實例。 另外,它可能會立即被提名垃圾收集。
不,從技術上講,它們是相同的。
在這種情況下,我建議考慮的唯一事情是,好像該函數實際上不需要實例創建一樣,您可以考慮將其聲明為靜態,因此可以像下面這樣簡單地調用它:
int a = MyObject.getInt();
但這自然取決於具體的實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.