Nullの初期値に変数を割り当て、次のif
-_else
ブロックにその値を割り当てたいのですが、コンパイラがエラーを出しています。
暗黙的に型指定されたローカル変数は初期化する必要があります。
どうすればこれを達成できますか?
var
変数にはまだ型があり、コンパイラエラーメッセージにはこの型が示されています宣言中に確立する必要があります。
特定の要求(初期null値の割り当て)は実行できますが、お勧めしません。ここでは利点は提供されず(タイプを指定する必要があるため)、コードが読みにくくなると見なされる可能性があります。
_var x = (String)null;
_
まだ「型推論」されており、次のものと同等です:
_String x = null;
_
コンパイラしないは_var x = null
_を受け入れます。これは、オブジェクトとは関係なく、nullをどのタイプとも関連付けないためです。上記のアプローチを使用すると、var x = (Object)null
は「有効」になりますが、有用性には疑問があります。
一般的に、var
の型推論を正しく使用できない場合、
2番目のアプローチは、コードをメソッドまたは関数に移動することで実行できます。
C#の主な利点のvar
キーワードは、機能ではなく読みやすさを向上させることです。技術的には、var
キーワードは他のロック解除(匿名オブジェクトの使用など)を許可しますが、それはこの質問の範囲外のようです。 var
キーワードで宣言されたすべての変数には型があります。たとえば、次のコードは「String」を出力することがわかります。
_var myString = "";
Console.Write(myString.GetType().Name);
_
さらに、上記のコードは次と同等です:
_String myString = "";
Console.Write(myString.GetType().Name);
_
var
キーワードは、単にC#の「コンテキストからmyString
の型を把握できるので、型を指定する必要はありません」と言う方法です。
myVariable
のタイプを把握するためにC#コンパイラコンテキストを提供しているため、var myVariable = (MyType)null
または_MyType myVariable = null
_は機能するはずです。
詳細については: