-7

var(anonymous) キーワードとは何か、このキーワードを主に使用する方法と場所を知っています (LINQ - そうでなければ、var キーワードを使用できる場所の関数の正確な戻り値を知りませんでした)。

これらの 2 つの行に違いがないことはわかっていますが、var キーワードがメモリ リークの問題を解決するのではないかと疑っています。

例えば ​​:

C#:

Window window=new Window();
var window=new Window();
4

2 に答える 2

4

まず、匿名のキーワードでvarはありません。あなたのコードには匿名のものは何も表示されていません。第二に、「これらの 2 つの行に違いがないことがわかっている」場合、なぜメモリ リークに関して何かが変わるのではないかと疑うのでしょうか。いいえ、そうではありません。いいえ、そもそもここに「メモリリーク」はおそらくありません。

Windowが実装されているかどうかを確認しますIDisposable。その場合、およびの使用がローカル スコープに限定されている場合は、次を使用します(これにより、ガベージ コレクターを待つのではなく、リソースの割り当てがすぐに解除されるようになります)。windowusing

using(var window=new Window()) {
    // NOT SHOWN: configure it, display it (modally), read the final values, etc
}

上の例でvarは、「window」を 1 行に 3 回入力する必要がないようにするための純粋な利便性があります。

于 2013-10-28T10:41:44.877 に答える
1

キーワードはvar匿名型で使用でき、型推論に使用できます (変数の型はコンパイラによって推論できます)。これらの 2 行は、まったく同じ IL コードにコンパイルされます。

Window window=new Window();
var window=new Window();

あなたが言及しているメモリリークの問題はわかりませんが、一方がメモリリークを引き起こすことはありません。

于 2013-10-28T10:42:11.153 に答える