最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#11新特性使用案例詳解

 更新時間:2022年05月14日 14:00:25   作者:gui.h  
這篇文章主要為大家介紹了C#11新特性的使用案例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

在日常開發(fā)中我們經(jīng)常會將JSON、XML、HTML、SQL、Regex等字符串拷貝粘貼到我們的代碼中,而這些字符串往往包含很多的引號",我們就必須將所有引號逐個添加轉(zhuǎn)義符\進(jìn)行轉(zhuǎn)義。這個轉(zhuǎn)義十分麻煩,且容易出錯,而當(dāng)我們們需要替換這些字符串時,重新粘貼進(jìn)來的文本仍需要再次進(jìn)行轉(zhuǎn)義,簡直讓人崩潰。

在我的工作中經(jīng)常會遇到這么一個場景,對于某核心業(yè)務(wù)的方法,業(yè)務(wù)執(zhí)行前一般會進(jìn)行日志輸出參數(shù)對象(Json格式),這樣可在業(yè)務(wù)出現(xiàn)故障時追溯到當(dāng)時的參數(shù)值,有利于事后補(bǔ)償或復(fù)現(xiàn)bug等。假設(shè)故障發(fā)生了,我從日志中獲取了這個參數(shù)值的內(nèi)容如下

{
    "kpzdbs": "YJ2",
    "jqbh": "499098528334",
    "fplxdm": "026",
    "fpqqlsh": "ZJBX965525",
    "kplx": 0,
    "tspz": "00"
}

為復(fù)現(xiàn)該問題,在控制臺或單元測試中,將該參數(shù)定義,并調(diào)用MyLogic方法,

可以看到報錯的字符串是我直接從日志中拷貝的json粘貼進(jìn)去的,需要對所有的"進(jìn)行轉(zhuǎn)義,這是很蛋疼的一個問題,有時候可能需要將很多日志中的對象粘貼進(jìn)來測試,每次粘貼完還要進(jìn)行插入轉(zhuǎn)義符號

現(xiàn)在我們不需要這樣做了。

新特性之原始字符串

原始字符串文本是字符串文本的新格式。原始字符串文本可以包含任意文本,包括空格、新行、嵌入引號和其他特殊字符,而無需轉(zhuǎn)義序列。原始字符串文本以至少三個雙引號開頭, (""") 個字符。它以相同數(shù)量的雙引號字符結(jié)尾。通常,原始字符串文本在單個行上使用三個雙引號來啟動字符串,另一行的三個雙引號結(jié)束字符串。尾引號和尾引號前面的換行符不包括在最終內(nèi)容中。

詳細(xì)內(nèi)容參考這里

使用案例

我使用這一新特性修改上面場景中的代碼如下,可以看到,json字符串不做任何轉(zhuǎn)義直接粘貼進(jìn)來即可。

又比如我需要粘貼一段html,如果沒有這新特性,轉(zhuǎn)義那么多引號,你可能會瘋吧!!

原始字符串使用需要注意的地方

以至少三個雙引號 ("""...""") 開頭和結(jié)尾,任何數(shù)量小于打開原始字符串文字的數(shù)量的雙引號都被視為內(nèi)容。

尾引號和尾引號前面的換行符不包括在最終內(nèi)容中。

原始字符串文本通常在單個行上使用三個雙引號來啟動字符串,另一行的三個雙引號結(jié)束字符串。

可以和$(可有多個)內(nèi)插字符串一起使用,前綴$的數(shù)量是指示嵌套代碼表達(dá)式所需的花括號的數(shù)量。如果原始字符串文字以$$為前綴,則將單個大括號視為內(nèi)容,并且需要兩個大括號來指示嵌套代碼。就像使用引號一樣,您可以添加更多$以允許將更多大括號視為內(nèi)容。

什么情況下需要超過三個雙引號開頭

當(dāng)字符串的內(nèi)容中包含至少三個"一起出現(xiàn),你的連續(xù)出現(xiàn)"的個數(shù)加1(最少三個),就是原始字符串要開頭和結(jié)尾使用"的個數(shù),所以說不是固定三個"注意:圖中字符串前面的|并不是輸入的字符,是編譯器的對齊提示。

輸出

尾引號和尾引號前面的換行符不包括在最終內(nèi)容中

如下如,編譯器自動以結(jié)尾""""前為界限顯示出一條豎線,豎線左側(cè)的空格不算作內(nèi)容。

結(jié)尾的三個引號不另起一行行不行

將結(jié)尾字符放到內(nèi)容后面,編譯器會提示你將其放到自己的行上

這個可以理解為,在這種情況下可能會引起歧義,編譯器不確定你的原始字符串是以下三種的哪一種。

如果下面這樣,則不會歧義,以箭頭指向的豎線為界,左側(cè)空格都不算做內(nèi)容,右側(cè)空格均算作內(nèi)容

如果是全在一行也行,因?yàn)椴粫a(chǎn)生歧義。

和內(nèi)插字符一起使用

這個比較難理解點(diǎn),$符號的數(shù)量也是不固定的,根據(jù)你需要連續(xù)將多少個花括號作為原始字符你想要輸出的內(nèi)容沒有括號時,屬于常規(guī)用法,沒什么好說的。

如果你想輸出下文

{張三}

會遇到這個問題的提示

簡單理解就是,你需要將一個大括號視作內(nèi)容,就需要兩個$作為前綴,你需要將n個括號是做內(nèi)容,就需要n + 1個$做為前綴,同樣內(nèi)插字符串也需要消耗跟$同樣數(shù)量的大括號。因?yàn)槟阋獙⒁粋€大括號視為內(nèi)容,所以需要1 + 1 = 2個$,同樣,內(nèi)插變量也需要跟$數(shù)量一致的括號包裹,所以修改后的代碼如下。

如果你想輸出的內(nèi)容是

{{{{張三

需要將四個括號視為內(nèi)容,n = 4,$數(shù)量為4 + 1 = 5,內(nèi)插變量也需要5和括號包裹。

總結(jié)

當(dāng)我們將帶有引號的文本粘貼至編譯器中需要進(jìn)行大量的轉(zhuǎn)義操作,原始字符串特性能很好的解決這個問題,讓我們可以愉快進(jìn)行粘貼這些字符串,但當(dāng)與內(nèi)插字符串使用時,尤其是多個大括號場景還是比較難以理解的,好在編譯器會提示怎么做,且那種場景都屬于極其不常見。

以上就是C#11新特性使用案例詳解內(nèi)容,更多關(guān)于C#11新特性的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#簡單發(fā)送email的方法

    C#簡單發(fā)送email的方法

    這篇文章主要介紹了C#簡單發(fā)送email的方法,涉及C#發(fā)送Email的相關(guān)技巧,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-04-04
  • winform創(chuàng)建不規(guī)則窗體的方法

    winform創(chuàng)建不規(guī)則窗體的方法

    這篇文章主要介紹了winform創(chuàng)建不規(guī)則窗體的方法,涉及C#窗體創(chuàng)建的相關(guān)參數(shù)設(shè)置技巧,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-09-09
  • C#實(shí)現(xiàn)Modbus通信的詳細(xì)教程(支持TCP和RTU)

    C#實(shí)現(xiàn)Modbus通信的詳細(xì)教程(支持TCP和RTU)

    Modbus 協(xié)議是一種廣泛應(yīng)用于工業(yè)自動化中的通信協(xié)議,用于在設(shè)備之間進(jìn)行數(shù)據(jù)交換,它基于主/從架構(gòu),并支持多種傳輸方式,如 Modbus TCP 和 Modbus RTU,在本文中,我們將使用 C# 編程語言和開源庫 NModbus,展示如何輕松實(shí)現(xiàn) Modbus 通信,需要的朋友可以參考下
    2025-01-01
  • C#之lock的使用及說明

    C#之lock的使用及說明

    這篇文章主要介紹了C#之lock的使用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 詳解C#批量插入數(shù)據(jù)到Sqlserver中的四種方式

    詳解C#批量插入數(shù)據(jù)到Sqlserver中的四種方式

    本文主要講解一下在Sqlserver中批量插入數(shù)據(jù)。文中大數(shù)據(jù)批量插入方式一和方式四盡量避免使用,而方式二和方式三都是非常高效的批量插入數(shù)據(jù)方式,需要的朋友可以看下
    2016-12-12
  • C# SQLite執(zhí)行效率的優(yōu)化教程

    C# SQLite執(zhí)行效率的優(yōu)化教程

    這篇文章主要給大家介紹了關(guān)于C# SQLite執(zhí)行效率優(yōu)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用C# SQLite具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • C#?中?List?與?List?多層嵌套不改變原值的實(shí)現(xiàn)方法(深度復(fù)制)

    C#?中?List?與?List?多層嵌套不改變原值的實(shí)現(xiàn)方法(深度復(fù)制)

    這篇文章主要介紹了C#?中?List?與?List?多層嵌套不改變原值的實(shí)現(xiàn)方法,使用?BinaryFormatter?將原始?List?序列化為字節(jié)流,然后再反序列化得到新的?List,實(shí)現(xiàn)了深度復(fù)制,需要的朋友可以參考下
    2024-03-03
  • C#實(shí)現(xiàn)統(tǒng)計100以內(nèi)所有素數(shù)的個數(shù)

    C#實(shí)現(xiàn)統(tǒng)計100以內(nèi)所有素數(shù)的個數(shù)

    這篇文章介紹了C#實(shí)現(xiàn)統(tǒng)計100以內(nèi)所有素數(shù)個數(shù)的方法,文中注釋非常詳細(xì),很適合新手學(xué)習(xí)。對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • 分享一個C#編寫簡單的聊天程序(詳細(xì)介紹)

    分享一個C#編寫簡單的聊天程序(詳細(xì)介紹)

    這是一篇基于Socket進(jìn)行網(wǎng)絡(luò)編程的入門文章,我對于網(wǎng)絡(luò)編程的學(xué)習(xí)并不夠深入,這篇文章是對于自己知識的一個鞏固,同時希望能為初學(xué)的朋友提供一點(diǎn)參考。文章大體分為四個部分:程序的分析與設(shè)計、C#網(wǎng)絡(luò)編程基礎(chǔ)(篇外篇)、聊天程序的實(shí)現(xiàn)模式、程序?qū)崿F(xiàn)
    2015-12-12
  • C#遍歷文件夾及子目錄下所有圖片

    C#遍歷文件夾及子目錄下所有圖片

    這篇文章主要為大家詳細(xì)介紹了C# 遍歷文件夾及子目錄下所有圖片的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01

最新評論

白水县| 秭归县| 临泉县| 大宁县| 克什克腾旗| 缙云县| 彭山县| 深圳市| 徐州市| 翼城县| 叶城县| 八宿县| 霸州市| 仙桃市| 枞阳县| 南投市| 来宾市| 徐汇区| 田东县| 图木舒克市| 平潭县| 丽江市| 休宁县| 固始县| 疏附县| 鸡泽县| 昌黎县| 高平市| 寿宁县| 东至县| 休宁县| 阿拉善左旗| 连平县| 乐业县| 绍兴市| 莱阳市| 大余县| 卢湾区| 彰化县| 莫力| 保靖县|