簡體   English   中英

轉換為int16,int32,int64 - 您如何知道選擇哪一個?

[英]Converting to int16, int32, int64 - how do you know which one to choose?

我經常需要轉換一個retreived值(通常作為字符串) - 然后將其轉換為int。 但是在C#(。Net)中,您必須選擇int16,int32或int64 - 當您不知道檢索到的數字有多大時,您如何知道選擇哪一個?

這里所有提到聲明Int16拯救公羊的人都應該得到一個downvote。

您的問題的答案是使用關鍵字“int”(或者如果您喜歡它,請使用“Int32”)。

這可以為您提供高達24億的數字...此外,32位處理器將更好地處理這些內容...而且(如果您最重要的原因 )是,如果您計划在幾乎任何原因使用該int ...它可能需要是一個“int”(Int32)。

在.Net框架中,99.999%的數字字段(即整數)是“整數”(Int32)。

示例:Array.Length,Process.ID,Windows.Width,Button.Height等等100萬次。

編輯:我意識到我的脾氣暴躁會讓我失望......但這是正確的答案。

只是想補充一點......我記得在.NET 1.1時代,編譯器已經過優化,因此'int'操作實際上比字節或短操作更快。

我相信它今天仍然存在,但我現在正在進行一些測試。


編輯:我有一個驚喜發現:short(s)的加,減和乘法運算實際上返回int!

反復嘗試TryParse()沒有意義,你已經聲明了一個字段。 除非你創建Object類型的字段,否則你無法改變主意。 不是個好主意。

無論該領域代表什么數據都具有物理意義。 這是一個年齡,大小,數量等。物理量對其范圍有實際限制。 選擇可以存儲該范圍的int類型。 不要試圖修復溢出,這將是一個錯誤。

與當前最流行的答案相反,較短的整數(如Int16和SByte)在內存中占用的空間通常比較大的整數(如Int32和Int64)占用的空間少。 您可以通過實例化大型sbyte / short / int / long數組並使用perfmon來測量托管堆大小來輕松驗證這一點。 確實,當對它們進行算術運算時,許多CLR風格會擴展這些整數以用於CPU特定的優化,但是當作為對象的一部分存儲時,它們只占用所需的內存。

所以,你肯定應該考慮大小,特別是如果你將使用大型整數列表(或包含整數字段的大型對象列表)。 您還應該考慮像CLS一樣的事情(不允許公共成員中的任何無符號整數)。

對於像將字符串轉換為整數這樣的簡單情況,我同意Int32(C#int)通常最有意義,並且很可能是其他程序員所期望的。

如果我們只是談論幾個數字,那么選擇最大的數字不會對你的整體ram使用產生明顯的影響而且會起作用。 如果你在談論很多數字,你需要在它們上面使用TryParse()並找出最小的int類型,以節省ram。

所有電腦都是有限的。 您需要根據您認為的用戶要求定義上限。

如果你真的沒有上限並希望允許“無限”值,請嘗試將.Net Java運行時庫添加到項目中,這將允許您使用java.math.BigInteger類 - 它幾乎無限大小的數學運算整數。

注意:.Net Java庫帶有完整的DevStudio,但我不認為它們帶有Express。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM