C#中数字字面量中的下划线是什么意思?

38
在下面的代码中,下划线的意义是什么:
public const long BillionsAndBillions = 100_000_000_000;
1个回答

66

这是C# 7.0的一个新功能,被称为数字分隔符。目的是提供更好、更易读的代码。它在编写非常长且难以阅读的数字时非常有用。例如:

long hardToRead = 9000000000000000000; 

// With underscores
long easyToRead = 90000_00000_00000_0000;  

程序员可以完全自行决定下划线的放置位置。例如,您可能会遇到以下奇怪情况:

var weird = 1_00_0_0_000_0000000_0000;  
public const decimal GoldenRatio = 1.618_033_988_749_894_848_204_586_834_365_638_117_720M;

注意事项

当你编译代码时,编译器会移除下划线,这只是为了提高代码的可读性。所以下面的代码输出结果为:

public static void Main()
{
    long easyToRead = 90000_00000_00000_0000;
    Console.WriteLine(easyToRead);
}

将是(注意没有下划线):

9000000000000000000

在 DotNet Fiddle 中查看演示

如果你感兴趣,这里有一个关于这个功能的讨论。一些人希望分隔符是空格,但看起来 C# 团队选择了下划线。


20
Stack Overflow一直明确鼓励回答自己的问题。除非他们的答案很差,否则不应该因为这样做而对任何人进行投票降分。 - I.B
1
很好的解释! - vasilisdmr

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