Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 电话号码应该是一个字符串或一些数字类型,有能力保存电话号码?_C#_Sql_Phone Number_Telephony - Fatal编程技术网

C# 电话号码应该是一个字符串或一些数字类型,有能力保存电话号码?

C# 电话号码应该是一个字符串或一些数字类型,有能力保存电话号码?,c#,sql,phone-number,telephony,C#,Sql,Phone Number,Telephony,我们想储存10位数的手机号码,即99999999。它应该是数字数据类型还是字符串数据类型?我们不想在这上面做任何计算或操作 哪一种内存和性能更好?表示在国家/地区拨号计划中,国家/地区代码需要3位数字,目录号最多需要15位数字 而且,许多人添加了一些标点符号。例如: +1.212.555.1212是一个北美数字。它也可以被渲染 (212)以北美为中心的应用程序中的555-1212 32个字符的文本应该在全球范围内起作用 不要用数字,否则你会后悔的。我是:两件事 因为我们假设所有的电话号码都是十

我们想储存10位数的手机号码,即99999999。它应该是数字数据类型还是字符串数据类型?我们不想在这上面做任何计算或操作

哪一种内存和性能更好?

表示在国家/地区拨号计划中,国家/地区代码需要3位数字,目录号最多需要15位数字

而且,许多人添加了一些标点符号。例如:

+1.212.555.1212是一个北美数字。它也可以被渲染 (212)以北美为中心的应用程序中的555-1212

32个字符的文本应该在全球范围内起作用

不要用数字,否则你会后悔的。我是:两件事

  • 因为我们假设所有的电话号码都是十位数,所以失去了一家公司在欧洲的一些业务
  • 一个电子表格输出以科学记数法呈现了数字
    2.12555E+09
    ,这几乎就像SIRI告诉我你有来自两百亿、一亿两千五百万的电话一样愚蠢

电话簿号码不是数字数据类型。请看一下:。

它必须是
字符串,因为电话号码将超过
int
或甚至
long
的限制。因此,在处理这些场景时,总是首选字符串。

您可以使用“ulong”来存储长整数值。要读取特定值或电话号码,可以使用“Convert.ToUInt64(Console.ReadLine());”

记住以下几点:

通常,您不打算对其进行计算的数字应以字符串形式存储。 如果您需要号码以零开头(就像您所做的那样,因为有些电话号码是零),这是必不可少的

因此,即使(或当)您能够将电话号码存储为一个大整数(您可以使用64位整数),您也不应该这样做。一旦一个数字以零开始,您就会丢失数据

存储电话号码时,请记住国家代码是一种特殊类型的信息。如果在存储该数字时将其与其他数字分开,您会做得更好。通过这种方式,您可以轻松地按国家查询电话号码,并且您不必多次解析号码(在存储之前,而不是每次提取时)。 此外,如果您将电话号码与国家代码一起存储,则需要验证以确保始终存储国家代码,因为如果一个有国家代码,而另一个没有,则来自两个不同国家的两个号码可能是相同的

还要记住,标点符号是一种表示方法,因此与存储数据的方式无关。 您总是可以选择以您想要的方式呈现数据,并且您想要的方式在所有情况下都取决于许多因素。例如,您呈现的数据类型、呈现对象以及在某些情况下甚至在呈现数据时。 对于电话号码,您应该将号码存储为字符串,不带任何标点符号

我建议您看看谷歌的国际电话号码解析、格式化和验证库()。你可以向这个库提供你的电话号码和国家代码,它会给你很多有用的信息,比如这个号码是否可能有效,它属于哪个地区,它是什么类型的号码,等等

Pro提示一:为用户提供选择号码所属国家的方法,而不是让他们键入国家代码。对你和你的用户都有好处


专业提示二:很少有“以北美为中心的应用程序”或“以插入地区为中心的应用程序”这样的东西,特别是如果你的应用程序可以在web上使用的话。它确实会发生,但很少见,所以你最好为世界准备你的应用程序,而不是它的一小部分。

memory+performance=int。但这一小部分性能提升应该是您最不担心的。如果您的用户键入数字,并且您不关心其正确性,那么不要限制自己只存储数字,还允许其他字符。StringsPhonenumber可以以0开头,因此整数不适合。或者如果你使用的是国际电话号码,你不需要计算电话号码。另外,如果你在处理电话号码时担心记忆和性能,那么你的注意力就错了。有人提出结束这个问题,因为它是基于观点的。考虑到ITU-T有一个标准,我不同意那个人的观点。有带字母的电话号码吗?电话号码格式由位置决定,因此,如果您收集的是电话号码而不是位置,这是一个很好的答案。E.164不考虑字母,只考虑数字。还有标点符号。但是,如果您使用文本字符串来表示目录号,那么没有什么可以阻止您使用字母。但是像
CEntral 2-1212
这样的目录号的日子已经一去不复返了。“…一个你不打算计算的数字,应该以字符串的形式存储。”~Amen。