C# のオブジェクト宣言に疑問があります。私はこれを行うことができるこの例で説明します:
MyObject obj = New MyObject();
int a = obj.getInt();
または私はこれを行うことができます
int a = new MyObject().getInt();
結果は同じですが、この宣言の間に違いはありますか? (構文なし)
ありがとう。
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
いくつかのコメントが追加されているように、クラスをインスタンス化し、オブジェクトを参照 (変数) に格納する方が優れている/最適である多くのエッジケースがありますが、単純なサンプルについては、その違いは十分ではないと思います。それはまだコーディング スタイル/可読性の問題です。
主に構文です。
主な違いは、2 番目の例では MyObject のインスタンスを使用できないことです。また、すぐにガベージ コレクションに指名される場合もあります。
いいえ、技術的には同じです。
この場合に考慮することをお勧めする唯一のことは、関数が実際にインスタンスを作成する必要がない場合は、静的に宣言することを検討できるため、次のように単純に呼び出すことができます。
int a = MyObject.getInt();
しかし、これは当然、具体的な実装に依存します。