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

一文帶你深入了解C#中的特殊字符

 更新時間:2024年01月30日 10:03:47   作者:goyeer  
特殊字符是預定義的上下文字符,用于修飾最前面插入了此類字符的程序元素,C#支持以下特殊字符:@和$,本文將通過代碼示例帶大家深入了解C#中的特殊字符,感興趣的小伙伴跟著小編一起來看看吧

一、概述

特殊字符是預定義的上下文字符,用于修飾最前面插入了此類字符的程序元素(文本字符串,標識符或屬性名稱)。C#支持以下特殊字符:

  • @:逐字字符串標識符字符
  • $: 內插入字符串字符

二、$-- 字符串內插

$ 字符將字符串字面量標識為內插字符串。 內插字符串是可能包含內插表達式的字符串文本 。 將內插字符串解析為結果字符串時,帶有內插表達式的項會替換為表達式結果的字符串表示形式。

字符串內插為格式化字符串提供了一種可讀性和便捷性更高的方式。它比字符串復合格式設置更容易。

public static void Main(string[] arg)
{
    var name = "Mark";
    var date = DateTime.Now;
    Console.WriteLine("Hello, {0}! Today is {1}, it's {2:HH:mm} now.", name, date.DayOfWeek, date);
    Console.WriteLine($"Hello, {name}! Today is {date.DayOfWeek}, it's {date:HH:mm} now.");
}

從C#10開始,可以使用內插字符串來初始化常量字符串。僅當內插字符串中的所有內插表達式也是常量字符串時,才可以執(zhí)行此操作。

2.1 內插字符串的結構

若要將字符串標識為內插字符串,可在該字符串前面加上$符號。字符串字面量開頭的$"之間不能有任何空格。

具備內插表達式的項的結構如下所示:

{<interpolationExpression>[,<alignment>][:<formatString>]}
  1. interpolationExpression 生成需要設置格式的結果的表達式。null的字符串表示形式為String.Empty。
  2. alignment 常數(shù)表達式,它的值定義表達式結果的字符串表示形式中的最小字符數(shù)。 如果值為正,則字符串表示形式為右對齊;如果值為負,則為左對齊。
  3. formatString 受表達式結果類型支持的格式字符串。
public static void Main(string[] arg)
{
   Console.WriteLine($"|{"Left",-7}|{"Right",7}|");
   const int FieldWidthRightAligned = 20;
   Console.WriteLine($"{Math.PI,FieldWidthRightAligned} - default formatting of the pi number");
   Console.WriteLine($"{Math.PI,FieldWidthRightAligned:F2} - display only three decimal digits");
}

從 C# 11 開始,可以在內插表達式中使用換行符,以使表達式的代碼更具可讀性。

下面的示例展示了換行符如何提高涉及模式匹配的表達式的可讀性:

public static void Main(string[] arg)
{
   var safetyScore = 80;
   string message = $"The usage policy for {safetyScore} is" +
          $" {safetyScore switch
                 {
                     > 90 => "Unlimited usage",
                     > 80 => "General usage, with daily safety check",
                     > 70 => "Issues must be addressed within 1 week",
                     > 50 => "Issues must be addressed within 1 day",
                     _ => "Issues must be addressed before continued use",
                 }}";
   Console.WriteLine(message);
}

2.2 內插原始字符串字面量

從C# 11開始,可以使用內插原始字符串字面量。如以下示例所示:

int X=2;
int Y=3;
var pointMessage = $"""The point"{X},{Y}" is {Math.Sqrt(X*X+Y*Y):F3} from the origin""";
Console.WriteLine(pointMessage);

要在結果字符串嵌入{}字符,請讓內插原始字符串字面量以多個$字符開頭。執(zhí)行此操作時,任何長度短$字符數(shù)的{}字符序列都會嵌入到結果字符串中。若要將任何內插表達式包含該字符串中,需要使用與$字符數(shù)相同的大括號數(shù)。

如以下示例所示:

int X = 2;
int Y = 3;

var pointMessage = $$"""{The point {{{X}}, {{Y}}} is {{Math.Sqrt(X * X + Y * Y):F3}} from the origin}""";
Console.WriteLine(pointMessage);

內插原始字符串字面量以兩個$字符開頭。需要將每個內插表達式放在雙大括號{{}}之間。單個大括號嵌入到結果字符串中,如果需要重復的{}字符嵌入結果字符串中,請使用相應增加的$字符數(shù)來指定內插原始字符串字面量。

2.3 特殊字符

要在內插字符串生成的文本中包含大括"{“或”}",請使用兩個大括號,即“{{”或“}}”。有關詳細信息。

因為冒號(“:”)在內插表達式中具有特殊含義,為了在內插表達式使用條件運算符,請將表達式放在括號內。

下面示例演示了如何在結果字符串中包含大括號。下面示例演示如何使用條件運算符:

string name = "Horace";
int age = 34;
Console.WriteLine($"He asked, \"Is your name {name}?\", but didn't wait for a reply :-{{");
Console.WriteLine($"{name} is {age} year{(age == 1 ? "" : "s")} old.");

內插逐字字符串以$@字符開頭??梢园慈我忭樞蚴褂?code>$和@: $@"..."@$"..."均為有效的內插逐字字符串。

2.4 內插字符串編譯

從C#10和.NET 6開始,編譯器會檢查內插字符串是否被分配給滿足內插字符串處理程序模式要求的類型。內插字符串處理程序是一種內插字符串轉換為結果字符串的類型。當內插字符串的類型為string時,它由System.Runtime.CompilerServices.DefaultInterpolatedStringHandle處理。

在C# 10之前,如果內插字符串類型為String,則通常將其轉換為String.Format方法調用。如果分析的行為等同于串聯(lián),則編譯器可將String.Format替換為String.Concat。

如果內插字符串類型為IFormattable或FormattableString,則編譯器會生成對FormattableStringFactory.Create方法的調用。

三、@-- 逐字字符串標識符

@特殊字符用作原義標識符。通過以下方式使用它:

  • 指示將原義解釋字符串。@字符在此實例中定義原義標識符。簡單轉義序列、十六進制轉義序列和Unicode轉義序列都將字面解釋。只有引號轉義序列(“”)不會被字面解釋;因為它生成一個雙引號。此外。如果是逐字內插字符串,大括號轉義序列({{}})不按字面解釋;它們會生成單個大括號字符。
string filename1 = @"c:\documents\files\u0066.txt";
string filename2 = "c:\\documents\\files\\u0066.txt";
Console.WriteLine(filename1);
Console.WriteLine(filename2);
  • 使用C#關鍵字作為標識符。@字符可作為代碼元素的前綴,編譯器將把此代碼元素解釋為標識符而非C#關鍵字。
string[] @for={"John","James","Joan","Jamie"};
for(int ctr = 0; ctr<@for.Length;ctr++)
{
    Console.WriteLine($"Here is your gift, {@for[ctr]}!");
}
  • 使編譯器在命名沖突的情況下區(qū)分兩種屬性。屬性是派生自Attribute的類。其類型名稱通常包含后綴Attribute,但編譯器不會強制進行轉換。

四、“”“–原始字符串文本

原始字符串字面量以至少三個雙引號()字符開始和結束:

var singleLine = """This is a "raw string literal". It can contain characters like \, ' and ".""";

原始字符串字面量可以包含多行:

var xml = """
        <element attr="content">
            <body>
            </body>
        </element>
        """;

以下規(guī)則控制多行原始字符串字面量的解釋:

  • 左引號和右引號字符必須位于各自的行中
  • 右引號左側的任何空格將從原始字符串字面量的所有行中刪除。
  • 將忽略同一行中左引號后面的空格。
  • 字符串字面量中僅包含左引號后面的空格行

可能需要創(chuàng)建包含三個或更多連續(xù)雙引號字符的原始字符串字面量。 原始字符串字面量可以至少三個雙引號字符的序列開始和結束。 如果字符串字面量包含三個連續(xù)雙引號,則以四個雙引號字符開始和結束原始字符串字面量:

var moreQuotes = """" As you can see,"""Raw string literals""" can start and end with more than three double-quotes when needed."""";

原始字符串字面量還可以與內插字符串結合使用,以在輸出字符串中嵌入{}字符。在內插的原始字符串字面量中使用多個$字符,以在輸出字符串中嵌入{}字符,而無需對這些字符進行轉義。

到此這篇關于一文帶你深入了解C#中的特殊字符的文章就介紹到這了,更多相關C#特殊字符內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 使用C#代碼在PDF中添加或刪除附件

    使用C#代碼在PDF中添加或刪除附件

    除文本和圖形外,PDF 文件還可以包含作為附件嵌入的完整文件,這使得成套文檔的交換更加方便和可靠,本文演示如何使用 Spire.PDF for .NET 在 C# 和 VB.NET 中向 PDF 文檔添加或刪除這兩種類型的附件,需要的朋友可以參考下
    2025-12-12
  • C#使用InstallerProjects打包桌面應用程序的完整步驟

    C#使用InstallerProjects打包桌面應用程序的完整步驟

    這篇文章主要給大家介紹了關于C#使用InstallerProjects打包桌面應用程序的完整步驟,文中通過示例代碼介紹的非常詳細,對大家學習或者使用C#具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-07-07
  • C#實現(xiàn)在兩個數(shù)字之間生成隨機數(shù)的方法

    C#實現(xiàn)在兩個數(shù)字之間生成隨機數(shù)的方法

    這篇文章主要介紹了C#實現(xiàn)在兩個數(shù)字之間生成隨機數(shù)的方法,在一些特殊場景會用到哦,需要的朋友可以參考下
    2014-08-08
  • c# 遍歷獲取所有文件的示例代碼

    c# 遍歷獲取所有文件的示例代碼

    這篇文章主要介紹了c# 遍歷獲取所有文件的示例代碼,幫助大家更好的理解和學習python,感興趣的朋友可以了解下
    2020-12-12
  • 淺析C#?AsyncLocal如何在異步間進行數(shù)據(jù)流轉

    淺析C#?AsyncLocal如何在異步間進行數(shù)據(jù)流轉

    在異步編程中,處理異步操作之間的數(shù)據(jù)流轉是一個比較常用的操作,C#異步編程提供了一個強大的工具來解決這個問題,那就是AsyncLocal,下面我們就來看看AsyncLocal的原理和用法吧
    2023-08-08
  • C#中DataTable導出為HTML格式的方法

    C#中DataTable導出為HTML格式的方法

    在平時的開發(fā)中經(jīng)常會將DataTable數(shù)據(jù)轉化到頁面顯示、打印、導出等操作,下面這篇文章主要給大家介紹了C#中DataTable導出為HTML格式的方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • C#中is與as的區(qū)別分析

    C#中is與as的區(qū)別分析

    這篇文章主要介紹了C#中is與as的區(qū)別,較為詳細的分析了is與as的原理與特性及用法區(qū)別,具有很好的學習借鑒價值,需要的朋友可以參考下
    2014-10-10
  • C# winfrom實現(xiàn)讀取修改xml

    C# winfrom實現(xiàn)讀取修改xml

    這篇文章主要為大家詳細介紹了C# winfrom實現(xiàn)讀取修改xml的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • C#調用js庫的方法小結

    C#調用js庫的方法小結

    本文主要介紹了C#調用js庫的方法小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • Winform控件優(yōu)化之圓角按鈕2

    Winform控件優(yōu)化之圓角按鈕2

    這篇文章主要介紹了Winform控件優(yōu)化之圓角按鈕2,文章通過圍繞主題展開詳細的內容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-08-08

最新評論

辉县市| 台中市| 钦州市| 梁山县| 闽清县| 资中县| 南雄市| 新竹县| 江达县| 通化县| 台南县| 阳春市| 河西区| 鄱阳县| 石渠县| 洛隆县| 仁布县| 昌平区| 遂川县| 民县| 汝阳县| 巴中市| 仁化县| 永兴县| 福清市| 江陵县| 于都县| 茶陵县| 芜湖县| 锡林郭勒盟| 定西市| 渝中区| 丹寨县| 太仆寺旗| 繁峙县| 兴宁市| 霍州市| 阿瓦提县| 临沂市| 永寿县| 黔西|