をキャストするために後置私はdapperページを見ているとコーディングのこの簡潔なビットを見た:C#の疑問符演算子は
new { Age = (int?)null, Id = guid });
(int?)null
は何をしますか?
誰かが何が起こっているのか解明して、おそらくコードのより冗長なバージョンを与えることができますか?
をキャストするために後置私はdapperページを見ているとコーディングのこの簡潔なビットを見た:C#の疑問符演算子は
new { Age = (int?)null, Id = guid });
(int?)null
は何をしますか?
誰かが何が起こっているのか解明して、おそらくコードのより冗長なバージョンを与えることができますか?
int?
は、Nullable<int>
の省略形です。そのため、このコード行はnull(デフォルトではobject
の型)をnull intに変換しています。
ドキュメント:http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx
あなたが持っているすべてのnew { Age = null }
ある場合、コンパイラはAge
の正確な型が何であるかを知る方法はありません。したがって、「キャスト」null
〜Nullable<Int32>
は、Age
プロパティがそのタイプのものであることを効果的に示します。
?
は、それは((System.Nullable<int>)null)
ための構文shorhandあるNullable
int型
をマーク。
これはanonymous typeです。Age
のタイプは、割り当てられた値から暗黙的に指定する必要があります。 null
には、任意のヌル入力可能型を指定できます。キャストにはAge
のタイプが指定されています:int?
(別名Nullable<int>
)
最も早い回答と私の今後の読解のためのドキュメントへのリンクも含まれていますので、私はこれをアンサーチェックします。他の答えはまた、Albinの短縮形の拡張、Serge'sの「匿名型」および「null」の説明、コンパイラーがAgeのタイプを推論する方法の詳細についてはAntonの説明を参照してください。もう一度ありがとう、すべて。 – Tim