ここで、明示的な型付けよりも暗黙的な型付けを使用することに少し混乱しています。
MSDN の C# コーディング標準で引用されているとおり:
割り当ての右側から変数の型が明らかな場合、または正確な型が重要でない場合は、ローカル変数に暗黙的な型指定を使用します。
私の質問は、基になる変数の型が既にわかっているのに、なぜここで暗黙の型付けを使用する必要があるのでしょうか?
利点は何ですか?
私の疑問を明確にするのを手伝ってください。
ここで、明示的な型付けよりも暗黙的な型付けを使用することに少し混乱しています。
MSDN の C# コーディング標準で引用されているとおり:
割り当ての右側から変数の型が明らかな場合、または正確な型が重要でない場合は、ローカル変数に暗黙的な型指定を使用します。
私の質問は、基になる変数の型が既にわかっているのに、なぜここで暗黙の型付けを使用する必要があるのでしょうか?
利点は何ですか?
私の疑問を明確にするのを手伝ってください。
take this as an example:
var q = from c in myCollection
select new
{ c.Value1, c.Value2 };
we can't determine the datatype of q here because it's generated at run time "anonymus-type"
and that is the main purpose of it
これを見てください:
Collection<KeyValuePair<Predicate<T>, Action<T>>> x =
new Collection<KeyValuePair<Predicate<T>, Action<T>>>();
そして今これを見てください:
var x = new Collection<KeyValuePair<Predicate<T>, Action<T>>>();
そして、私はあえて、私はあなたを二重にあえて、var
キーワードを使用することに利点がないことを私に伝えます。
注:これは、私が言及しないいくつかのプロジェクトでの実際の宣言に基づいています。
キーワードを使用することにはいくつかの欠点があると思う可能性がありますvar
が、それらはすべてコンパイル時に発生します。実行可能ファイルはいつものように優れています。そうです、、、、var
と同じではありobject
ませdynamic
んvariant
!代わりに、割り当てているもののタイプで変数を宣言するようにコンパイラーに指示します。
例えば:
var x = 1;
x = "something"; //Error!!!
わかりました、それはばかげているように聞こえるかもしれません。「私はタイプを知っています」-あなたが言う-「なぜ私はそれを置くことができないのですか?」-あなたは尋ねます-「見て、それは簡単です:」
int x = 1;
さて、3つの理由:
この最後のポイントは、テキスト変換テンプレートまたはコードスニペットを作成するときに特に役立ちますが、日常のコピーアンドペーストにも役立ちます。
それでも、難解なメソッドのリターンタイプを変更したかどうかを考えてみてください...次のように言ってください。
List<string> MamboJambo()
{
//...
}
そして今、あなたはそれを次のように変更しました:
IList<string> MamboJambo()
{
//...
}
大野!今すぐ50クラスを更新する必要があります。何を待つ?いいえ、しません!常に使用するという推奨事項に従っているためですvar
。
注:わかりました。現実的な例ではありませんが、それでも要点はわかります。
基になる変数型がすでにわかっているのに、なぜここで暗黙的な型付けを使用する必要があるのでしょうか。利点は何でしょうか?
必要に応じて、コーディングの利便性、高速タイピングのためだけに加えて、行が短くなります。
最後に、その場合、タイプは割り当ての右側に表示されます。
暗黙的に型指定された変数を宣言します。つまり、コンパイル時に型が自動的に決定されるため、型を入力する必要はありません。その主な目的は、たとえば匿名メソッドを割り当てたい変数を宣言することです。基本的に、入力を減らすだけで、それ以上は入力できません。また、コード リーダーの観点からも、可能な場合は正確なタイプを指定する方がはるかに優れています。