簡體   English   中英

c#對象實例化

[英]c# object instantiation

有什么區別:

Object o = new Object();
o.foo();

new Object().foo();

(假設我之后不需要參考)?

是否有任何理由使用一個而不是另一個(例如內存使用)?

執行方面沒有區別。

調試方面可能有所不同:

  • 在創建對象之后但在調用foo()之前,它可以很方便地中斷
  • 之后能夠檢查變量的值是很方便的
  • 如果拋出異常,將調用分成多行可以使源更清晰。 (我不認為在這種特殊情況下會出現問題,但特別是對於NullReferenceException ,如果同一語句中有多個解除引用操作,則可能會很棘手)。

我絕對不是說你應該總是將所有內容分開 - 只是它可以用於調試目的。

如果之后不需要實例,則沒有區別。

如果你不需要o后語,那么沒有區別。
(JIT)編譯器可能會將它們視為相同。

所以這是一個品味問題。 在這種情況下,我略微偏愛第一個,但有時第二個樣本的流暢表示法更具可讀性。

沒有不同。

要探測它,你可以編譯兩個代碼(發布模式),用ildasm檢查它們,你會看到結果字節碼是相同的。

編輯:實際上,我有時發現在聲明變量時更容易調試。 更容易檢查,因此更容易調試。

編輯:刪除了錯誤的代碼

不同之處在於,在第一種情況下,您可以看到在調試器中創建的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM