是否有可读的方法将数百万的数据放入c#代码中?
这有点难以阅读:
int x = 100000000;
有没有简单的方法写:
int x = 100,000,000;
那么规模是显而易见的吗?
请注意,这不是关于输出的格式。
有没有简单的方法可以写出
100,000,000
不可以。不可能将逗号放在数字中。
逗号和其他类似的东西用于演示目的。 如果您担心代码可读性,则要么声明具有MILLION
, TEN_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;
像这样的常量是在编译时计算的,不会影响性能。