我經常需要轉換一個retreived值(通常是一個字符串) - 然後將其轉換爲int。但在C#(.Net)中,您必須選擇int16,int32或int64 - 當您不知道檢索的數字有多大時,您如何知道選擇哪一個?轉換爲int16,int32,int64 - 您如何知道選擇哪一個?
回答
這裏所有提到聲明Int16保存內存的人都應該得到一個downvote。
你的問題的答案是使用關鍵字「int」(或者如果你覺得它,使用「Int32」)。
這給你一個高達24億的數字範圍...此外,32位處理器將更好地處理這些整數...還有(和最重要的原因)是,如果你打算使用該int幾乎任何原因......它可能需要是一個「int」(Int32)。
在.Net框架中,99.999%的數字字段(即整數)是「ints」(Int32)。
示例:Array.Length,Process.ID,Windows.Width,Button.Height等等等等等等等等。
編輯:我意識到我的脾氣暴躁會讓我失望......但這是正確的答案。
爲什麼你會downvote答案,說Int16佔用少於Int32的RAM?它通常會這樣做,如果您需要將大量整數存儲在內存中,這可能是一個重要因素。 PS:我其實很享受你的脾氣,並沒有降低你的滿意度。 :) – 2008-11-06 21:28:12
最惱人的事情:Stream.Read和Stream.Write接受'int'偏移量,而Stream.Length很長時間...呃! chunking甚至沒有提供! – chakrit 2008-11-06 21:32:38
如果我們只是談論幾個數字,選擇最大值不會在整體RAM使用方面產生明顯的差異,並且只會起作用。如果你正在談論很多數字,你需要在它們上使用TryParse(),並找出最小的int類型,以節省RAM。
所有計算機都是有限的。您需要根據您認爲您的用戶要求定義上限。
如果你確實沒有上限並且想要允許'unlimited'值,那麼可以嘗試在你的項目中添加.Net Java運行時庫,這將允許你使用java.math.BigInteger類 - 幾乎無限大小的整數。
注意:.NET Java庫帶有完整的DevStudio,但我認爲它們不包含Express。
只是想補充一點......我記得在.NET 1.1的日子裏編譯器已經過優化,所以'int'操作實際上比字節或短操作更快。
我相信它現在仍然有效,但我現在正在進行一些測試。
編輯:我有一個驚喜的發現:在加,減法和乘法運算短(S)實際上返回INT!
重複嘗試TryParse()沒有意義,您已經聲明瞭一個字段。除非您創建Object類型的字段,否則您無法改變主意。不是一個好主意。
無論數據字段表示具有物理意義。這是一個年齡,大小,數量等物理量在其範圍內具有現實的限制。選擇可以存儲該範圍的int類型。不要試圖修復溢出,這將是一個錯誤。
與當前最流行的答案相反,較短的整數(如Int16和SByte)通常佔用的內存空間少於大整數(如Int32和Int64)。您可以通過實例化sbyte/short/int/long的大數組並使用perfmon來測量託管堆大小來輕鬆驗證此情況。確實,許多CLR風格將在對它們進行算術運算時擴大這些用於CPU特定優化的整數,但是當作爲對象的一部分進行存儲時,它們只佔用盡可能多的內存。
所以,你絕對應該考慮大小,特別是如果你將使用大整數列表(或包含整數字段的大對象列表)。您還應該考慮CLS合規性(禁止公共成員中的任何無符號整數)。
對於將字符串轉換爲整數等簡單情況,我同意Int32(C#int)通常是最有意義的,並且可能是其他程序員期望的。
- 1. Swift:將Int16轉換爲Int32(或NSInteger)
- 2. 爲Int32生成警告Int64轉換爲Int64
- 3. 轉換INT32的倍增效應INT64
- 4. 如何知道選擇哪個項目?
- 5. 別名爲int32,int64
- 6. 無法將int32轉換爲int16。 Int16類型值太大或太小
- 7. 從int32到int64的轉換如何工作
- 8. 如何知道選擇了哪個單選按鈕?
- 9. 如何知道在Qt中選擇了哪個選項卡?
- 10. 如何知道選擇哪個選項PHP
- 11. 64位機器,性能爲int64和int16
- 12. 如何將一個Int64解碼回兩個Int32?
- 13. 將可選字符串轉換爲Int64
- 14. 如何知道選擇了哪個滑塊
- 15. 如何將UInt64轉換爲Int64?
- 16. 如何將int64轉換爲時間戳
- 17. 如何知道在TableViewer中選擇了哪一行?
- 18. 爲什麼核心數據沒有類型Int?那麼如果我有一個Int,最好從Int16選擇Int64?
- 19. C#將2個Int16加入到Int32中
- 20. 將int64轉換爲uint64
- 21. 如何知道在Intent.ACTION_SEND中選擇了哪個意圖?
- 22. Xamarin - 如何知道用戶選擇了哪個文件
- 23. 如何知道選擇了哪個mysqli_fetch_assoc行
- 24. 如何將System.Object的確是一個int32 []轉換爲double []?
- 25. 知道在哪個單元格中選擇了哪個按鈕
- 26. 字符串轉換爲INT64
- 27. C#將int轉換爲Int64
- 28. 如何讓Json.NET將Int32轉換爲URI
- 29. 將Swift數據轉換爲Int16
- 30. 將int32轉換爲int
不要忘記,如果你不需要負數,c#也有unsigned int(uint32,uint64)。 – Powerlord 2008-11-06 21:18:39