重複の可能性:
C# での var キーワードの
使用 変数宣言での「var」型の使用
みなさん、こんにちは。
「Var キーワークには、明示的な型キャストが必要です。可能であれば、値の型のボックス化とボックス化解除を避けてください。」
明示的なデータ型の代わりに var キーワードを使用することをお勧めしますか?
重複の可能性:
C# での var キーワードの
使用 変数宣言での「var」型の使用
みなさん、こんにちは。
「Var キーワークには、明示的な型キャストが必要です。可能であれば、値の型のボックス化とボックス化解除を避けてください。」
明示的なデータ型の代わりに var キーワードを使用することをお勧めしますか?
これにより、ローカル変数の命名が改善されます。明示的な型でローカル変数宣言を読み取ると、その時点でより多くの情報が得られ、「IUnitTestElement current」のようなものが理にかなっています。ただし、このローカル変数を後で使用すると、「現在」と読み上げられ、意味を理解するのに時間がかかります。「var currentElement」を使用すると、どこでも読みやすくなります。
より良い API を誘導します。コンパイラにメソッドの戻り値の型またはプロパティの型から型を推測させる場合、最初に適切な型を用意する必要があります。初期化式に明示的な型がない場合は、メンバーに最適な名前を付ける必要があります。
変数の初期化を誘導します。一般に、宣言で変数を初期化することをお勧めします。コンパイラには、「var」キーワードで宣言されたローカル変数の型を推測するための初期化子が必要です。
コードノイズを除去します。暗黙的に型指定された local によって、開発者が読む必要があるテキストの量が減る、またはスキップされる場合が多くあります。「var」を使用しない場合、新しいオブジェクト式またはキャスト式からローカル変数を宣言するには、型を 2 回指定する必要があります。ジェネリックを使用すると、冗長なコードが多数発生する可能性があります。別の例は、ディクショナリに対する foreach の反復変数です。
using ディレクティブは必要ありません。var を使用すると、コンパイラが型を推測するため、型を明示的に参照する必要がないため、一時変数が必要な場合に名前空間をインポートする必要はありません。
短所は潜在的に読みにくいコードです。たとえば、行
int myInt = 0;
はほとんどの場合よりも簡単です
var myInt = 0;
が、これは主に、私たちが何年も見てきた構文によるものです。
var
はデータ型ではなく、単に「let-the-compiler-infer-at-compile-time-what-actual-type-to-use」の「シンタックス シュガー」です。
したがって、次の型推論を理解する必要があります。
var x = 4; //int
var y = 4.0; //double
var z = 4M; //decimal
var w = (string)null; //string