我能在C#中声明带有千位分隔符的常量整数吗?

22

编程语言 Cobra 具有一个有用的特性,即您可以在数字字面量中使用下划线来提高可读性。例如,以下两行代码是等效的,但第二行更容易阅读:

x = 1000000
x = 1_000_000  # obviously 1 million

在C#中有类似的东西吗?


1
请注意,这很有可能转换为C# 7。 - vcsjones
每次我在C#中写一个大数时,我都希望有这个。 - Krythic
2个回答

26

C# 7的答案

是的,C# 7支持这个功能。但要注意,没有验证您是否将下划线放在了正确的位置:

// At a glance, this may look like a billion, but we accidentally missed a 0.
int x = 1_00_000_000;

2011年的回答

不,C#中没有这样的东西。您可以这样做:

const int x = 1000 * 1000;

但这已经是最好的了。

(请注意,这个增强功能也被引入了Java 7...也许有一天它会被引入到C#中。)


你知道这有点作弊,那么你会如何写出123456789? - Surjit Samra
2
@SurjitSamra:是的,在那种情况下它并没有帮助 - 但常量通常是其他值的倍数。(例如,“一小时的毫秒数”等) 在这种情况下,为每个常量分配一个单独的名称以适当地构建它们往往更易读。 - Jon Skeet
1
这现在可以在C# 7中使用,正如Jon的预测。请参见https://blogs.msdn.microsoft.com/dotnet/2017/03/09/new-features-in-c-7-0/中的“字面量改进”。 - Peter Stephens
1
@Sнаđошƒаӽ:我会编辑这个,但我没有一个政策去检查每一次有新的语言发布时所有我的答案... 我将没有时间做任何其他事情。 - Jon Skeet
没问题,我完全理解。毕竟这是_你的_政策!我本可以自己编辑它,但后来我想着,如果我编辑了_你的_答案,那会更奇怪!所以我选择提醒你;-) - Sнаđошƒаӽ
显示剩余4条评论

7

您可以使用C # 7.0实现此操作,如下所示这里

public const long BillionsAndBillions = 100_000_000_000;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接