問候,C# - 恆定值「4294901760」不能轉換爲「廉政」
我不能相信我在問這樣一個基本的問題,但它沒有任何意義所以在這裏,它是: )。
在C#在Windows Phone 7/.NET,我想在一個類中定義常量如下:
// error CS0266: Cannot implicitly convert type 'uint' to 'int'.
// An explicit conversion exists (are you missing a cast?)
public const int RED = 0xffff0000;
如果我把一個(INT)周圍鑄像這樣,我得到另一個錯誤:
// error CS0221: Constant value '4294901760' cannot be converted to a 'int'
// (use 'unchecked' syntax to override)
public const int RED = (int)0xffff0000;
但我知道,我的int是32位的,所以有一系列的-2,147,483,648到2,147,483,647,看到http://msdn.microsoft.com/en-us/library/5kzh1b5w(v=vs.80).aspx
那麼是什麼原因?
在此先感謝!
豬
是。必須遲到!所以...如果我使用unchecked,將C#截斷值或包裝它,保存數據? – swinefeaster 2011-05-17 07:29:42
http://msdn.microsoft.com/en-us/library/a569z7k8%28v=vs.71%29.aspx。因此:在未經檢查的上下文中,如果表達式產生的值超出目標類型的範圍,則結果將被截斷。 – VikciaR 2011-05-17 07:37:16
@Vik該頁有點誤導(最新版本更好) - 因爲這裏的數據類型是相同的大小,它不是真的'截' – AakashM 2011-05-17 07:40:59