对于Int32,值太大或太小

时间:2011-06-14 07:48:12

标签: c# asp.net

  

可能重复:
  What is the maximum value for a int32?

Mobileno = Convert.ToInt32(txmobileno.Text);
我在插入数据库时​​遇到的错误

3 个答案:

答案 0 :(得分:55)

为什么你会使用任何类型的整数来存储电话号码?

你无法在一个人身上做任何算术,你就会失去所有领先的零。

改为使用字符串。

答案 1 :(得分:14)

integer(Int32)的值可以存储,因为它“仅”使用32位。它可以存储2,147,483,647和-2,147,483,648之间的值。 (More information on MSDN

txmobileno.Text代表的值太大或太小。

查看名称txmobileno可能是手机号码。这种数字有太多的数字要存储在int32中。电话号码往往以0或00或+(国际)开头。无法以整数(或其他数字类型)存储此类信息。只需将它们存储在string

答案 2 :(得分:5)

正如其他人所指出的那样,将电话号码存储为整数是错误的。

  • 您将无法存储字符和空格,例如国家/地区代码 - “+44(0800)12345”。
  • 将逻辑存储为整数没有逻辑上的理由 - 您是否需要对两个电话号码进行算术运算?将两个电话号码加在一起是否有意义?
  • 领先的零将丢失 - (0800 12345)将成为(80012345)。
  • 将其存储为字符串可让您对用户输入进行正则表达式验证。

话虽如此,原来的问题确实提出了一些应该提出的观点:

  • 当源值为字符串时,首选Int32.TryParse而不是Convert.ToInt32。
  • 处理可能会溢出的值时 - 将代码括在已检查的{...}块中。