我经常需要转换一个检索值(通常作为字符串) - 然后将其转换为int。但是在C#(。Net)中,您必须选择int16,int32或int64 - 当您不知道检索到的数字有多大时,您如何知道选择哪一个?
答案 0 :(得分:20)
此处提到声明Int16拯救公羊的每个人都应该得到一个downvote。
您的问题的答案是使用关键字“int”(或者如果您愿意,请使用“Int32”)。
这为您提供了高达24亿个数字的范围...此外,32位处理器将更好地处理这些内容...如果您计划的话,也是(并且最重要的原因)几乎任何原因使用该int ......它可能需要是一个“int”(Int32)。
在.Net框架中,99.999%的数字字段(整数)是“整数”(Int32)。
示例:Array.Length,Process.ID,Windows.Width,Button.Height等等100万次。
编辑:我意识到我的脾气暴躁会让我失望......但这是正确的答案。答案 1 :(得分:9)
只是想补充一点......我记得在.NET 1.1时代,编译器已经过优化,因此'int'操作实际上比字节或短操作更快。
我相信它今天仍然存在,但我现在正在进行一些测试。
答案 2 :(得分:3)
反复尝试TryParse()没有意义,你已经声明了一个字段。除非你创建Object类型的字段,否则你无法改变主意。不是个好主意。
该字段所代表的任何数据都具有物理意义。这是一个年龄,大小,数量等。物理量对其范围有实际限制。选择可以存储该范围的int类型。不要试图修复溢出,这将是一个错误。
答案 3 :(得分:1)
与当前最流行的答案相反,较短的整数(如Int16和SByte)在内存中占用的空间通常比较大的整数(如Int32和Int64)占用的空间少。您可以通过实例化大型sbyte / short / int / long数组并使用perfmon来测量托管堆大小来轻松验证这一点。确实,当对它们进行算术运算时,许多CLR风格会扩展这些整数以用于CPU特定的优化,但是当作为对象的一部分存储时,它们只占用尽可能多的内存。
所以,你肯定应该考虑大小,特别是如果你将使用大型整数列表(或包含整数字段的大型对象列表)。您还应该考虑CLS合规性(不允许公共成员中任何未签名的整数)。
对于像将字符串转换为整数这样的简单情况,我同意Int32(C#int)通常最有意义,并且可能是其他程序员所期望的。
答案 4 :(得分:0)
如果我们只是谈论几个数字,那么选择最大的数字不会对你的整体ram使用产生明显的影响而且会起作用。如果你在谈论很多数字,你需要在它们上面使用TryParse()并找出最小的int类型,以节省ram。
答案 5 :(得分:0)
所有计算机都是有限的。您需要根据您认为的用户要求来定义上限。
如果你真的没有上限并希望允许'无限'值,请尝试将.Net Java运行时库添加到你的项目中,这将允许你使用java.math.BigInteger类 - 它几乎可以进行数学运算 - 无限大小整数。
注意:.Net Java库带有完整的DevStudio,但我不认为它们带有Express。