web-dev-qa-db-ja.com

varとconcreteタイプの使用法

Varの使用法に関してstackoverflowで5つ以上の投稿を確認しましたが、varの使用法に関する回答を探しています。私はvarの代わりにConcreteタイプを使用することに慣れていますが、Resharperがvarに変更すると文句を言います。 varはタイプの選択ですか?具体的なタイプがわかっている場合でも?

16
KrishnaDhungana

以下はmsdnからの抜粋です...

varキーワードは、変数の特定のタイプがキーボードでの入力が面倒な場合、明らかな場合、またはコードの可読性を向上させない場合にも役立ちます。 varがこのように役立つ1つの例は、グループ操作で使用されるようなネストされたジェネリック型を使用する場合です。次のクエリでは、クエリ変数のタイプはIEnumerable>です。あなたとあなたのコードを維持しなければならない他の人がこれを理解している限り、便宜と簡潔さのために暗黙のタイピングを使用することに問題はありません。

ただし、varを使用すると、少なくとも他の開発者がコードを理解しにくくなる可能性があります。そのため、C#ドキュメントでは通常、必要な場合にのみvarを使用します。

参照: http://msdn.Microsoft.com/en-us/library/bb384061.aspx

幸運を!

32
gpmurthy

読みやすさを向上させるためにタイプが明らかな場合は、varを使用することをお勧めします。

var myVariable = new List<string>();
var myVariable2 = (int) someOtherVariable;

タイプが明確でない場合は、明示的に指定します。たとえば、メソッドの戻り値は次のとおりです。

int myVariable3 = GetSomeValue();
22
BryanJ

から

var(C#リファレンス)

Visual C#3.0以降、メソッドスコープで宣言される変数は暗黙的な型varを持つことができます。暗黙的に型付けされたローカル変数は、自分で型を宣言したかのように強く型付けされますが、コンパイラーが型を決定します。次のiの2つの宣言は、機能的に同等です。

var i = 10; // implicitly typed
int i = 10; //explicitly typed

ここであなたにとって重要な部分は

暗黙的に型付けされたローカル変数は、自分で型を宣言したかのように強く型付けされますが、コンパイラーが型を決定します。

さらに、 暗黙的に型指定されたローカル変数(C#プログラミングガイド)

ローカル変数には、明示的な型の代わりに、varの推定「型」を与えることができます。 varキーワードは、初期化ステートメントの右側にある式から変数の型を推測するようにコンパイラーに指示します。推測される型は、組み込み型、匿名型、ユーザー定義型、または.NETFrameworkクラスライブラリで定義された型です。 varキーワードは「バリアント」を意味するものではなく、変数が緩く型付けされている、または遅れてバインドされていることを示すものではないことを理解することが重要です。これは、コンパイラが最も適切なタイプを決定して割り当てることを意味します。

12
Adriaan Stander