下划线在C#中的数字文字中是什么意思?

Cod*_*shi 2 c#

在下面的代码中,下划线的含义是什么:

public const long BillionsAndBillions = 100_000_000_000;
Run Code Online (Sandbox Code Playgroud)

Cod*_*shi 12

这是C#7.0的新功能,称为数字分隔符。目的是提供更好和更容易的可读性。当编写在源代码中非常长且难以阅读的数字时,它最有用。例如:

long hardToRead = 9000000000000000000; 

// With underscores
long easyToRead = 90000_00000_00000_0000;  
Run Code Online (Sandbox Code Playgroud)

完全由程序员决定下划线的放置位置。例如,您可能有一个奇怪的情况,例如:

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;
Run Code Online (Sandbox Code Playgroud)

一些注意事项

编译代码后,编译器会删除下划线,因此仅出于代码可读性考虑。因此,此输出:

public static void Main()
{
    long easyToRead = 90000_00000_00000_0000;
    Console.WriteLine(easyToRead);
}
Run Code Online (Sandbox Code Playgroud)

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

9000000000000000000
Run Code Online (Sandbox Code Playgroud)

<==尝试我!==>

如果您有兴趣,这里是有关何时请求此功能的讨论。有些人想的分隔符是空白的空间,但看起来像C#的团队去了下划线秒。

  • 这应该去文档,这里不是欺骗声誉的地方 (9认同)
  • @ adv12他问了一个“问题”,并立即回答了代表问题。 (5认同)
  • 堆栈溢出[始终明确鼓励](https://stackoverflow.com/help/self-answer)回答您自己的问题。除非他们的回答不好,否则您不应该对任何人都这样投票。 (5认同)
  • @Romoku这是您的意见。我的看法是,我从不使用文档,而且我不喜欢这种格式,与寻找文档中的C#7功能查找相同的东西相比,我更有可能找到并使用此答案。无论哪种情况,都不会因问答主题的问题或题外之意而导致此问题和答案。 (5认同)
  • @BRAHIMKamel,是吗?我想念什么?对我来说,这似乎是一个很好的答案。 (4认同)
  • 阅读[我可以回答我自己的问题吗?](https://stackoverflow.com/help/self-answer) (4认同)
  • @BRAHIMKamel 这不是一个技巧,而是分享关于 SO 的知识。 (3认同)
  • @DavidL文档是将此类问题迁移或指出的理想场所。对于这类问题,最好使用一个规范的参考,而不是一堆代表相同信息的不同答案。 (2认同)
  • @Romoku 我想一本关于 C# 的书是最好的地方,所以我们也应该删除文档。整个想法是有一个特定的问题和一个特定的答案。人们有时没有时间仔细阅读文档。 (2认同)