2011-08-09 5 views
2

をキャストするために後置私はdapperページを見ているとコーディングのこの簡潔なビットを見た:C#の疑問符演算子は

new { Age = (int?)null, Id = guid }); 

(int?)nullは何をしますか?

誰かが何が起こっているのか解明して、おそらくコードのより冗長なバージョンを与えることができますか?

答えて

6

int?は、Nullable<int>の省略形です。そのため、このコード行はnull(デフォルトではobjectの型)をnull intに変換しています。

ドキュメント:http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx

+0

最も早い回答と私の今後の読解のためのドキュメントへのリンクも含まれていますので、私はこれをアンサーチェックします。他の答えはまた、Albinの短縮形の拡張、Serge'sの「匿名型」および「null」の説明、コンパイラーがAgeのタイプを推論する方法の詳細についてはAntonの説明を参照してください。もう一度ありがとう、すべて。 – Tim

2

あなたが持っているすべてのnew { Age = null }ある場合、コンパイラはAgeの正確な型が何であるかを知る方法はありません。したがって、「キャスト」nullNullable<Int32>は、Ageプロパティがそのタイプのものであることを効果的に示します。

1

?は、それは((System.Nullable<int>)null)ための構文shorhandあるNullable int型

をマーク。

2

これはanonymous typeです。Ageのタイプは、割り当てられた値から暗黙的に指定する必要があります。 nullには、任意のヌル入力可能型を指定できます。キャストにはAgeのタイプが指定されています:int?(別名Nullable<int>