2017-08-28 43 views
0

最近我碰到一个代码库,发现类似下面它在C#中的哪些数据类型?

var a = 1_23_456; 
Console.WriteLine(a); 

我试图在Visual Studio中运行它2015/.NET捣鼓一些代码,但它有一个编译错误。但是当我使用Roslyn 2.0编译器重试它时,它编译并给出了输出123456.

这里有什么问题?为什么它将数据显示为整数?

+13

这是一个C#7功能。它允许你在数字中加一个'_'作为数字分组的一种方式。你需要VS 2017来编译它。请参阅此博客文章中的“文字改进”部分。 https://blogs.msdn.microsoft.com/dotnet/2017/03/09/new-features-in-c-7-0/ – vcsjones

+0

尝试'Console.WriteLine(a.GetType());'找出(扰流板:这是一个'int',又名'System.Int32') – dasblinkenlight

+0

Btw:[fiddle](https://dotnetfiddle.net/BuljEh)支持Roslyn 2.0。 – Sinatr

回答

4

下划线是数字分隔符。它们用于使读取大数字(特别是二进制数字)更容易。你可以read about them on MSDN

下划线不会更改数据类型。所有下面的语句导致相同的数据类型(int或System.Int32)和值:

var a = 123456; 
int b = 123456; 
System.Int32 c = 123456; 
var d = 1_23_456; 
int e = 1_23_456; 
System.Int32 f = 1_23_456; 

您需要在Visual Studio 2017年新的编译器来编译它,但你可以逃脱与using Visual Studio 2015

+0

明白了:)。它提高了可读性。数字中的数字是否有其他技术优势?只是好奇。 –

+0

@NoorAShuvo无技术优势,只是可读性。它们对于处理二进制或十六进制特别有用。 – mason

相关问题