2011-08-09 119 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的「匿名類型」和關於'null'的解釋,以及Anton對進一步解釋編譯器如何推斷Age的類型的解釋。再次感謝所有。 – Tim

2

如果你只有new { Age = null },編譯器無法知道什麼是Age確切類型的方式。所以「鑄造」nullNullable<Int32>有效地告訴它,Age屬性是那種類型。

1

?標誌着Nullable INT

這是一個((System.Nullable<int>)null)語法shorhand。

2

這是一個anonymous typeAge的類型必須從分配給它的值中隱含。 null可以是任何可空類型。演員指定Age應該有類型:int?(又名Nullable<int>