2012-08-05 88 views
0

這是一個有點不尋常的問題,但我無法在投射數字類型時出現轉換錯誤。我需要得到一些像「值太短」等錯誤,但似乎C#守護它很好。 你能否給我提供一個簡單的代碼,在鑄造時失敗? (如計算器..)投射int類型時可以調用鑄造錯誤嗎?

+0

請您澄清一下您的期望?在將整數簡寫爲short時,您明確地說「我知道int更大,我知道這個演員陣容可能會丟失數據,我仍然希望它。」 – user1527329 2012-08-05 13:00:03

+0

是的,我希望看到錯誤。我只是希望得到一個運行時錯誤。 – user970696 2012-08-05 13:02:17

回答

4

可以使用checked關鍵字顯式地檢查整體類型轉換的溢出:

int i = int.MaxValue; 
short s = checked((short)i); 

還有,它可以使檢查轉換默認的一個checked compiler flag

0

你能否給我提供一個簡單的代碼,該代碼在鑄造時失敗?

int i = 400; 
object o = i; // here o will be System.Int32 automatically 

string s = (string)o; //Runtime Exception thrown System.InvalidCastException: 
+0

這不是運行時錯誤;) – user970696 2012-08-05 13:10:41

+0

@ user970696好吧壞了更新它 – HatSoft 2012-08-05 13:11:03

+0

@ user970696我已經更新了我的答案,它會在運行時拋出錯誤在o時將字符串轉換爲字符串 – HatSoft 2012-08-05 13:13:00

0

這聽起來像你正在嘗試寫一些錯誤處理代碼。該編譯器做看不當蒙上了偉大的工作,但如果你正在尋找一個運行時異常:

short y = short.Parse("56789"); 

這將引發OverflowException

OverflowException:值對於 Int16來說太大或太小。