當在C#方法參數中爲uint
參數指定默認值時,如下面的第一個代碼塊所示,我得到消息「一個類型爲'int'的值不能用作默認參數,因爲存在沒有標準的轉換來鍵入'uint'「,而當在方法體中爲一個uint變量分配一個int時,它是沒問題的。爲什麼將一個整數值賦給C#方法參數中的一個uint參數是無效的?
該代碼確實編譯;該警告是由紅色的方式提供,在Visual Studio中的波浪下劃線2010
void GetHistoricData(uint historyLength = 365)
{
uint i = 365; // this is valid
}
這是很容易解決的,通過代替365使用365U,即:
void GetHistoricData(uint historyLength = 365U)
{
// method body
}
我發現它真的很難找到一個很好的解釋,爲什麼在其他地方有效的時候在參數中指定int
到uint
是無效的。任何人都可以幫我用我想找到的'燈泡'時刻嗎?
紅色下劃線應該表示您無法編譯。你有沒有嘗試重新啓動VS? – Tsabo 2012-03-15 11:03:47
我相信這是特定於您的設置:警告不顯示在我的代碼與「紅色,波浪下劃線」。 – 2012-03-15 11:05:12
當下劃線突出顯示時,Visual Studio重新啓動引發ReSharper顯示其左側燈泡,表明這只是ReSharper警告中的一個。 – Jason 2012-03-15 11:08:26