是否有可读的方法将数百万的数据放入c#代码中?

这有点难以阅读:

int x = 100000000; 

有没有简单的方法写:

 int x = 100,000,000; 

那么规模是显而易见的吗?

请注意,这不是关于输出的格式。

有没有简单的方法可以写出100,000,000

不可以。不可能将逗号放在数字中。

逗号和其他类似的东西用于演示目的。 如果您担心代码可读性,则要么声明具有MILLIONTEN_MILLIONS名称的常量,要么只是将变量命名为value来表示值

简答:不

目前还没有语言集成function允许这样做,所以简短的回答是否定的。 正如其他人所表明的那样,有不同的方式来允许更易读的方式,但我不认为这就是你的意思。

更进一步:是的

自从我第一次回答这个问题以来,function提案#216( 数字分隔符 )已经被接受,它将使它成为C#7:C#7中的新function (章节文字改进 )。

要分隔数字组,您将能够使用underscore-char _ 。 下划线可以放在数字中的任何位置。 一个简单的例子:

const int MILLION = 1_000_000;

您可以将_放在任何您想要的位置,甚至可以将其与整数文字组合:

const int USHORT_MAX = 0xFF_FF;

甚至在浮点数和小数位之后,即使在十进制符号之后:

const decimal SMALL_VALUE = 0.000_000_001;

 int x = Int32.Parse("100,000,000", System.Globalization.NumberStyles.Number); 

我想,这是否更具可读性是个人偏好。

不幸的是,你的int声明中不能有逗号。 可能是在代码开头添加类似内容的最佳方法:

const int oneMillion = 1000000;

然后设置int x = oneMillion;

如果你想将int y等于200万,那么只需设置int y = 2 * oneMillion;

这是最佳实践(根据我的经验)。

这有帮助吗?


编辑:

对于更精细的整数,您可以尝试这样的事情:

 const int thousand = 1000; const int million = 1000000; int x = 1 * million + 233 * thousand + 456; 

它不是最漂亮的,但它可能适合您的可读性需求。 它也不会像Int32.Parse("100,000,000");那样影响性能Int32.Parse("100,000,000");

你可以为你的号码创建自己的类,就像这样。

 public class MyNumber { long? _myValue = null; public MyNumber(string amount) { long result = 0; if (long.TryParse(amount.Replace(",", ""), out result)) { _myValue = result; } else _myValue = 0; } public bool HasValue() { if (_myValue.HasValue) return true; return false; } public long Value() { if (this.HasValue()) { return _myValue.Value; } else { return 0; } } } 

然后你就可以这样称呼它。

  MyNumber myValue = new MyNumber("9,999,100"); if (myValue.HasValue()) MessageBox.Show("Value Is " + myValue.Value().ToString()); 

如果目的是帮助读者理解代码,那么代码注释可能是合适的,例如

 int number = 1000000; //1,000,000 

如果您认为科学记数法更容易阅读,您可以尝试

 int number = 1 * 10^6; 

要么

 int number = (int) 1E+6; 

像这样的常量是在编译时计算的,不会影响性能。