2016年9月6日火曜日

C#7.0の新機能:桁区切り記号(数字セパレータ)


VisualStudio15で追加される予定のC#7.0 をVisualStudio15 Preview4で確認してみました。

C#7.0 では、数値に桁区切り記号を追加して、記載できるようになるみたいです。


Int32 val1 = 1_010_010;
Console.WriteLine($"{val1}");


では、どこまで対応しているか、試してみたいと思います。

ノーマル

Int32 val1 = 10_101_010;
Console.WriteLine($"{val1}");

3桁以外の区切り位置

Int32 val2 = 10_1010_10;
Console.WriteLine($"{val2}");

区切り文字いっぱい

Int32 val3 = 10_101___010;
Console.WriteLine($"{val3}");

16進数で区切り文字

Int32 val4 = 0x9a21_12;
Console.WriteLine($"{val4}");

2進数で区切り文字

Int32 val5 = 0b100_110_100_010_000_100_010_010;
Console.WriteLine($"{val5}");


小数点で区切り文字

double val6 = 0.12_34;
Console.WriteLine($"{val6}");

ここまでは大丈夫でした。
10101010
10101010
10101010
10101010
10101010
0.1234


ここからは、コンパイラで怒られてしまった例:

バイナリリテラルのbの直後

Int32 val7 = 0b_100_110_100_010_000_100_010_010;
Console.WriteLine($"{val7}");

数値の最初または最後

Int32 val8 = 123_;
Int32 val9 = _123;
Console.WriteLine($"{val8}");
Console.WriteLine($"{val9}");

考察

とりあえず、すぐに思いつく限りはやってみました。
基本的な箇所には、使えるようです。(当たり前ですが・・・)

これで、桁数が大きい場合のコードミスが減りそうですね。
(でも、コードミスするような人は、使ってくれないんですよね(T_T))


0 件のコメント:

コメントを投稿