2017-08-28 29 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

相關問題