這是一個有點不尋常的問題,但我無法在投射數字類型時出現轉換錯誤。我需要得到一些像「值太短」等錯誤,但似乎C#守護它很好。 你能否給我提供一個簡單的代碼,在鑄造時失敗? (如計算器..)投射int類型時可以調用鑄造錯誤嗎?
回答
可以使用checked關鍵字顯式地檢查整體類型轉換的溢出:
int i = int.MaxValue;
short s = checked((short)i);
還有,它可以使檢查轉換默認的一個checked compiler flag。
你能否給我提供一個簡單的代碼,該代碼在鑄造時失敗?
int i = 400;
object o = i; // here o will be System.Int32 automatically
string s = (string)o; //Runtime Exception thrown System.InvalidCastException:
這不是運行時錯誤;) – user970696 2012-08-05 13:10:41
@ user970696好吧壞了更新它 – HatSoft 2012-08-05 13:11:03
@ user970696我已經更新了我的答案,它會在運行時拋出錯誤在o時將字符串轉換爲字符串 – HatSoft 2012-08-05 13:13:00
這聽起來像你正在嘗試寫一些錯誤處理代碼。該編譯器做看不當蒙上了偉大的工作,但如果你正在尋找一個運行時異常:
short y = short.Parse("56789");
這將引發OverflowException
。
OverflowException:值對於 Int16來說太大或太小。
- 1. 奇怪的鑄造行爲。不能投射對象(int)以長
- 2. 鑄造類型映射,FluentNhibernate
- 3. Java泛型 - 錯誤鑄造泛型類
- 4. 沒有編譯時錯誤鑄造錯誤的類型時
- 5. 當鑄造類'無法鑄造'錯誤
- 6. 鑄造匿名類型拋出鑄造錯誤
- 7. 鑄造接口可以在陣列類型上反射
- 8. Firebase Swift 3類型鑄造錯誤
- 9. webAPI,類型錯誤的鑄造對象
- 10. 窄鑄造int到更小的類型
- 11. 類型鑄造int到雙java?
- 12. 類型鑄造int到雙C++
- 13. 鑄造apr_time_t不同int型
- 14. 鑄造類型
- 15. 鑄造爲int和浮點錯誤?
- 16. 是否可以投射類型參數?
- 17. 反射+的Linq +型鑄造
- 18. 錯誤鑄造
- 19. 鑄造從類型類型
- 20. C#類型在運行時使用反射鑄造
- 21. 在Java中的類型鑄造/鑄造
- 22. 我可以有條件地投射到不同的類型嗎?
- 23. 運行時錯誤當鑄造(向下鑄造)類型到另一個子類型
- 24. flex3類型鑄造
- 25. 類型鑄造datetime
- 26. SQL類型鑄造
- 27. Windbg類型鑄造
- 28. Python類型鑄造
- 29. Oracle類型鑄造
- 30. VB.NET - 鑄造類型
請您澄清一下您的期望?在將整數簡寫爲short時,您明確地說「我知道int更大,我知道這個演員陣容可能會丟失數據,我仍然希望它。」 – user1527329 2012-08-05 13:00:03
是的,我希望看到錯誤。我只是希望得到一個運行時錯誤。 – user970696 2012-08-05 13:02:17