对于Int32,值太大或太小

vig*_*esh 14 c# asp.net

可能重复:
int32的最大值是多少?

Mobileno = Convert.ToInt32(txmobileno.Text);
Run Code Online (Sandbox Code Playgroud)

插入数据库时​​我得到的错误

Ode*_*ded 53

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

你不能在一个人身上做任何算术,你就会失去所有领先的零.

请改用字符串.


GvS*_*GvS 14

一个integer(Int32)已在它能够存储,因为它"仅仅"使用32位的值的限制.它可以存储2,147,483,647和-2,147,483,648之间的值.(有关MSDN的更多信息)

由此表示的值txmobileno.Text太大或太小.

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


Mat*_*vey 5

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

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

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

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