C# 中的数字分隔符 _
編寫 C# 代碼時(shí),我們時(shí)常會(huì)用到很大的數(shù)字,例如下面定義的變量:
const long loops = 50000000000;您能快速讀出這是多少嗎?是不是還是會(huì)有很多人把光標(biāo)定位到最后一位,然后按鍵盤上的向左鍵一個(gè)一個(gè)往上數(shù):個(gè)、十、百、千、萬(wàn)、十萬(wàn)、百萬(wàn)、千萬(wàn)、億、十億、百億、千億……
數(shù)字的這種寫法,嚴(yán)重影響了它的可讀性。所以人們才會(huì)發(fā)明了諸如千分位之類的寫法,上面的數(shù)字用千分位可以寫作?50,000,000,000,這樣子是不是可讀性就強(qiáng)多了?不過(guò)這是西方人的寫法。
如果按照我們中國(guó)人的習(xí)慣,可以寫成?500,0000,0000,是不是一眼就可以讀出來(lái)是五百億了?
那么問(wèn)題來(lái)了,我們能不能在代碼中這么寫來(lái)增強(qiáng)數(shù)字的可讀性呢?
答案是肯定的,不過(guò)要稍作改變 —— 把逗號(hào)換成下劃線?_:
這是從 C# 7.0 開(kāi)始支持的功能。它的用法和 Java 及 Python 中的用法是類似的。
當(dāng)我們使用下劃線?_?作為數(shù)字分隔符時(shí),可以把它添加在數(shù)字文本中除了第一個(gè)字符和最后一個(gè)字符之外的任何位置。將下劃線添加到長(zhǎng)數(shù)字的不同的位置,就形成了不同的分組,不同的分組在不同的情景中可能會(huì)有不同的意義。比如我們?cè)谑褂檬M(jìn)制、十六進(jìn)制或二進(jìn)制記數(shù)法聲明數(shù)字時(shí),可以加上下劃線?_?字符,使數(shù)字更易讀懂。
我們來(lái)舉個(gè)例子,定義下面一組數(shù)字:
int bin = 0b1001_1010_0001_0100;// 二進(jìn)制表示 int hex1 = 0x64_95_ED; // 十六進(jìn)制表示 int hex2 = 0x_64_95_ED; // 十六進(jìn)制表示 int dec1 = 1_000_000; // 十進(jìn)制 int dec2 = 100_0000; // 十進(jìn)制 int weird = 1_2__3___4____5_____6______7_______8________9; double real = 1_000.111_1e-5; decimal d = 1_222_345;上面的這些數(shù)字聲明編譯之后實(shí)際運(yùn)行的代碼是:
int bin = 39444; int hex1 = 6591981; int hex2 = 6591981; int dec1 = 1000000; int dec2 = 1000000; int weird = 123456789; double real = 0.010001111; decimal d = 1222345m;可以看出,雖然表示結(jié)果一樣,但是適當(dāng)?shù)靥砑恿讼聞澗€分隔符的寫法,大大增加了我們讀數(shù)的容易程度。
C# 中的任意數(shù)字都可以使用下劃線分隔,兩個(gè)連續(xù)數(shù)字字符之間允許出現(xiàn)多個(gè)下劃線。?但是有些時(shí)候是要注意的,比如在小數(shù)和指數(shù)中使用時(shí),不能出現(xiàn)在小數(shù)點(diǎn)(10_.0)的前后、指數(shù)字符(1.1e_1)的前后和類型說(shuō)明符(10_f)的前面,等等……
我們來(lái)看一些錯(cuò)誤的用例,下面的用法都是錯(cuò)誤的:
double d1 = 1.1_e1; //不能出現(xiàn)在指數(shù)字符前后 float f1 = 10_f; //不能出現(xiàn)在類型說(shuō)明符前面 double d2 = 10_.0; //不能出現(xiàn)在小數(shù)點(diǎn)前后 float pi1 = 3_.1415F; //不能出現(xiàn)在小數(shù)點(diǎn)前后 float pi2 = 3._1415F; //不能出現(xiàn)在小數(shù)點(diǎn)前后 int x1 = 52_; //不能出現(xiàn)在第一個(gè)字符和最后一個(gè)字符 int x2 = 0x52_; //不能出現(xiàn)在第一個(gè)字符和最后一個(gè)字符 int x3 = 0_x52; //不能出現(xiàn)在 0x 之間總結(jié)
在定義較大的數(shù)字時(shí),使用下劃線?_?作為分隔符,可以讓較長(zhǎng)的數(shù)字更具可讀性。這個(gè)功能雖然很微不足道,但當(dāng)你用到它的時(shí)候,易讀性會(huì)讓你的心情愉快很多,不是嗎?
下劃線分隔符?_?在語(yǔ)義上對(duì)運(yùn)行沒(méi)有任何影響,因?yàn)樗诰幾g的時(shí)候就被編譯器忽略了。
作者 :技術(shù)譯民
出品 :技術(shù)譯站(https://ITTranslator.cn/)
總結(jié)
以上是生活随笔為你收集整理的C# 中的数字分隔符 _的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 持续交付一:从开发到上线的环境
- 下一篇: 使用 .NET 5 体验大数据和机器学习