最近我碰到一個代碼庫,發現類似下面它在C#中的哪些數據類型?
var a = 1_23_456;
Console.WriteLine(a);
我試圖在Visual Studio中運行它2015/.NET搗鼓一些代碼,但它有一個編譯錯誤。但是當我使用Roslyn 2.0編譯器重試它時,它編譯並給出了輸出123456.
這裏有什麼問題?爲什麼它將數據顯示爲整數?
最近我碰到一個代碼庫,發現類似下面它在C#中的哪些數據類型?
var a = 1_23_456;
Console.WriteLine(a);
我試圖在Visual Studio中運行它2015/.NET搗鼓一些代碼,但它有一個編譯錯誤。但是當我使用Roslyn 2.0編譯器重試它時,它編譯並給出了輸出123456.
這裏有什麼問題?爲什麼它將數據顯示爲整數?
下劃線是數字分隔符。它們用於使讀取大數字(特別是二進制數字)更容易。你可以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。
明白了:)。它提高了可讀性。數字中的數字是否有其他技術優勢?只是好奇。 –
@NoorAShuvo無技術優勢,只是可讀性。它們對於處理二進制或十六進制特別有用。 – mason
這是一個C#7功能。它允許你在數字中加一個'_'作爲數字分組的一種方式。你需要VS 2017來編譯它。請參閱此博客文章中的「文字改進」部分。 https://blogs.msdn.microsoft.com/dotnet/2017/03/09/new-features-in-c-7-0/ – vcsjones
嘗試'Console.WriteLine(a.GetType());'找出(擾流板:這是一個'int',又名'System.Int32') – dasblinkenlight
Btw:[fiddle](https://dotnetfiddle.net/BuljEh)支持Roslyn 2.0。 – Sinatr