亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

詳解C#中的string與String

2019-10-29 21:16:54
字體:
來源:轉載
供稿:網友

目錄

  • 小寫 string 與大寫 String
  • 聲明與初始化 string
  • string 的不可變性
  • 正則 string 與原義 string
  • string 的轉義序列
  • 格式化字符串
  • 操作子字符串
  • 字符串的 null 與 ""(空)
  • 可提高性能的 StringBuilder 

字符串是 String 類型的對象,它的值是文本。 在內部,文本被存儲為 Char 對象的順序只讀集合。 C# 字符串末尾沒有以 null 結尾的字符;因此 C# 字符串可以包含任意數目的嵌入式 null 字符(“/0”)。 字符串的 Length 屬性代表它包含的 Char 對象的數量,而不是 Unicode 字符的數量。 若要訪問字符串中的各個 Unicode 碼位,請使用 StringInfo 對象。

小寫 string 與大寫 String

在 C# 中,關鍵字 string 是 String 的別名。 因此,String 與 string 等效,也就是說您想用哪個就用哪個。String 類提供了很多用于安全地創建、操作和比較字符串的方法。此外,C# 語言還重載某些運算符來簡化常見的字符串操作。

聲明與初始化 string

請看示例:

static void Main(string[] args)    {      // 聲明但不初始化       string msg1;      // 聲明并初始化為 null       string msg2 = null;      // 作為一個空字符串進行初始化,用 Empty(空) 常量而不是字面值的 ""(空)      string msg3 = String.Empty;      // 用正則的字符串字面值進行初始化       string oldPath = "c://windows";      // 直接以字符串初始化       string newPath = @"c:/windows";      // 也可以使用 System.String      String content = "Hello World!";      // 使用 const 防止 msg4 被篡改      const string msg4 = "I'm const!";      // 可以使用隱式類型 var      var msg5 = "Hi!";      // 使用 String 構造器進行初始化      char[] letters = { 'A', 'B', 'C' };      string alphabet = new String(letters);      Console.Read();    }

【注意】除了在使用字符數組初始化字符串時以外,不要使用 new 運算符創建字符串對象。

使用 Empty 常量值初始化字符串可新建字符串長度為零的 String 對象。零長度字符串的字符串表示形式為 ""。使用 Empty 值(而不是 null)初始化字符串可以降低發生 NullReferenceException 的可能性。我們常常會在嘗試訪問字符串之前使用靜態 IsNullOrEmpty(String) 方法驗證字符串的值。

string 的不可變性

字符串對象是不可變的:即它們創建之后就無法更改。 所有看似修改字符串的 String 方法和 C# 中的運算符,實際上都以新字符串對象的形式返回結果。 在下面的示例中,當連接 s1 和 s2 的內容以形成一個字符串時,不會修改兩個原始字符串。 += 運算符會創建一個包含組合內容的新字符串。 這個新對象賦給變量 s1,而最初賦給 s1 的對象由于沒有其他任何變量包含對它的引用而釋放,將在后續被垃圾回收。

示例一:

static void Main(string[] args)    {      var s1 = "Hi!";      var s2 = "Fanguzai!";      //拼接 s1 和 s2,并且修改 s1 指向的值      s1 += s2;  //即 s1 = s1 + s2;      Console.WriteLine(s1);      Console.Read();    }

C#,string

C#,string

圖:var s1 = "Hi!"; var s2 = "Fanguzai!";

C#,string

圖:s1 = s1 + s2; 重新修改 s1 的指向

由于“修改”字符串實際上是創建一個新字符串,因此創建對字符串的引用時必須謹慎。 如果創建了對字符串的引用,然后“修改”原始字符串,則該引用指向的仍是原始對象,而不是修改字符串時創建的新對象。

static void Main(string[] args)    {      var s1 = "Hi! ";      var s2 = s1;      //在 s1 重新賦值后,這次沒有重新修改 s2 指向的值      s1 += "Fanguzai!";  //即 s1 = s1 + "Fanguzai!";      Console.WriteLine(s2);      Console.Read();    }

C#,string

C#,string

圖:var s1 = "Hi!"; s2 = s1; 他們指向相同的引用地址

C#,string

圖:s1 = s1 + "Fanguzai!"; 會創建一個沒有引用的 "Fanguzai!",并重新修改 s1 指向的值。

正則 string 與原義 string

如果必須嵌入 C# 提供的轉義符,則應使用正則字符串:

static void Main(string[] args)    {      var coluString = "Col1/tCol2/tCol3";      var rowString = "Row1/r/nRow2/r/nRow3";             Console.WriteLine(coluString);      Console.WriteLine("=====");      Console.WriteLine(rowString);      Console.Read();    }

C#,string

如果字符串文本包含反斜杠字符(例如在文件路徑中),為方便起見和提高可讀性,應使用原義字符串。由于原義字符串保留換行符作為字符串文本的一部分,因此可用于初始化多行字符串。在原義字符串中嵌入引號時請使用雙引號。下面的示例演示原義字符串的一些常見用途:

static void Main(string[] args)    {      var path = @"C:/Windows";      var text = @"Are you Fanguzai?            I'm Fanguzai!";             Console.WriteLine(path);      Console.WriteLine("=====");      Console.WriteLine(text);      Console.Read();    }

C#,string

string 的轉義序列

C#,string

【備注】編譯時,原義字符串轉換為所有轉義序列均保持不變的普通字符串。因而,如果在調試器監視窗口中查看原義字符串,則看到的將是編譯器添加的轉義字符,而不是源代碼中的原義版本。 例如,原義字符串 @"C:/temp.txt" 在監視窗口中將顯示為 "C://temp.txt"。

格式化字符串

格式字符串是內容可以在運行時動態確定的一種字符串。采用以下方式創建格式字符串:使用靜態 Format 方法并在大括號中嵌入占位符,這些占位符將在運行時替換為其他值。

private static void Main(string[] args)    {      const string name = "Fanguzai";      var s = string.Format("Hi, {0}!", name);  //使用占位符      Console.WriteLine(s);      Console.Read();    }

C#,string

操作子字符串

子字符串是包含在字符串中的任意字符序列。 使用 Substring 方法可以基于原始字符串的一部分創建新字符串。 可以使用 IndexOf 方法搜索子字符串的一個或多個匹配項。 使用 Replace 方法可將指定子字符串的所有匹配項替換為一個新字符串。 與 Substring 方法一樣,Replace 實際上返回的也是新字符串,而不修改原始字符串。

private static void Main(string[] args)    {      const string s1 = "Hi, Fanguzai!";      Console.WriteLine(s1.Substring(4));  //截取      Console.WriteLine(s1.Replace("Hi","Hello"));  //替換      Console.WriteLine(s1.IndexOf(",", StringComparison.Ordinal));  //取索引      Console.Read();    }

C#,string

字符串的 null 與 ""(空)

空字符串是不包含字符的 System.String 對象的實例。 在各種編程方案中經常會使用空字符串表示空白文本字段。 可以對空字符串調用方法,因為它們是有效的 System.String 對象。

var s = string.Empty;

相反,null 字符串并不引用 System.String 對象的實例,任何對 null 字符串調用方法的嘗試都會生成 NullReferenceException。 但是,可以在串聯和比較操作中將 null 字符串與其他字符串一起使用。

private static void Main(string[] args)    {      const string s1 = "Hi, Fanguzai!";      string s2 = null;      var s3 = string.Empty;      var s4 = s1 + s2;  //有值的字符串與 null 拼接      Console.WriteLine("s4: {0}", s4);      Console.WriteLine("");      var isTrue = (s2 == s3);      Console.WriteLine("isTrue: {0}", isTrue);      Console.WriteLine();      var s5 = s3 + s2;      Console.WriteLine("s5: {0}", s5);      Console.WriteLine();      Console.Read();    }

C#,string

可提高性能的 StringBuilder

.NET 中的字符串操作已高度優化,大多數情況下不會顯著影響性能。但在某些應用場景中,例如在執行數百甚至好幾億次的循環中,字符串操作很可能會影響性能。 StringBuilder 類創建了一個字符串緩沖區,用于在程序執行大量字符串操作時提供更好的性能。 StringBuilder 字符串可以重新分配個別字符(內置字符串數據類型所不支持的字符)。例如,此代碼在不創建新字符串的情況下更改了一個字符串的內容:

static void Main(string[] args)    {      var sb = new StringBuilder("~ Hi! Fanguzai!");      sb[0] = '^';      Console.WriteLine(sb);      Console.Read();    }

C#,string

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持VEVB武林網!


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品扒开腿爽爽爽视频| 欧美电影免费播放| 亚洲欧美精品伊人久久| 亚洲精品久久久久中文字幕欢迎你| 久久久999国产精品| 91精品国产91久久| 亚洲欧美变态国产另类| 日本欧美在线视频| 国产精品激情av电影在线观看| 亚洲图中文字幕| 97在线精品视频| 成人深夜直播免费观看| 国产精品亚洲综合天堂夜夜| 亚洲精品一区二区三区不| 精品久久久久久中文字幕大豆网| 亚洲天堂第二页| 亚洲经典中文字幕| 欧美日韩在线一区| 国产精品高潮呻吟久久av无限| 伊人男人综合视频网| 91精品视频观看| 国产精品香蕉在线观看| 欧美日本精品在线| 亚洲色图第三页| 国产在线观看一区二区三区| 欧美日韩免费区域视频在线观看| 色哟哟网站入口亚洲精品| 97在线看福利| 亚洲男人天天操| 色狠狠久久aa北条麻妃| 免费av在线一区| 国产成人在线亚洲欧美| 亚洲欧洲美洲在线综合| 日韩欧美精品中文字幕| 国产一区二区三区丝袜| 久久五月天色综合| 日韩69视频在线观看| 91亚洲精品久久久| 成人免费观看a| 色一区av在线| 在线观看国产精品91| 91午夜理伦私人影院| 久久成人这里只有精品| 久久久国产视频91| 欧美精品videosex性欧美| 久久久久久久久中文字幕| 欧美日韩国产一中文字不卡| 亚洲人成电影网| 精品久久久久久亚洲精品| 久久精品在线视频| 92看片淫黄大片看国产片| 欧美日韩在线视频一区| 欧美高清视频在线播放| 亚洲视频在线播放| 亚洲高清免费观看高清完整版| 91亚洲精品一区| 性夜试看影院91社区| 国产精品嫩草影院一区二区| 日韩中文字幕不卡视频| 国产精品一区二区三区成人| 亚洲人成电影网站色…| 精品亚洲国产成av人片传媒| 日韩精品免费一线在线观看| 欧美激情第99页| 国产一区二区三区在线播放免费观看| 69av在线播放| 欧美做受高潮电影o| 国产欧美日韩精品在线观看| 色偷偷综合社区| 国产精品第一第二| 久久久久中文字幕2018| 欧美高清电影在线看| 精品国产一区久久久| 中文字幕免费精品一区高清| 久久久爽爽爽美女图片| 在线中文字幕日韩| 欧美在线影院在线视频| 美日韩精品免费视频| 日韩中文有码在线视频| 日韩成人黄色av| 国产一区玩具在线观看| 亚洲美腿欧美激情另类| 成人黄色av网| 日韩av大片在线| 亚洲精品国产电影| 久青草国产97香蕉在线视频| 国产成人avxxxxx在线看| 久久婷婷国产麻豆91天堂| 国产中文欧美精品| 成人国产亚洲精品a区天堂华泰| 日韩精品在线私人| 久久精品国产视频| 国产日韩欧美在线视频观看| 2019中文字幕全在线观看| 91久久久久久久| 亚洲欧美在线一区| 国内精品小视频在线观看| 国产视频欧美视频| 成人精品网站在线观看| 色偷偷偷亚洲综合网另类| 中文国产成人精品| 国产精品成人一区二区三区吃奶| 欧美日韩人人澡狠狠躁视频| 亚洲激情中文字幕| 日韩av免费在线看| 日本欧美在线视频| 欧美激情一二三| 亚洲电影免费观看高清| 亚洲精品wwww| 欧美一级大片视频| 日韩成人黄色av| 91在线观看免费高清完整版在线观看| 高清欧美性猛交| 91九色国产社区在线观看| 中文字幕日本欧美| 欧美在线免费视频| 国产精品一区二区三区久久| 亚洲精品欧美极品| 另类专区欧美制服同性| 久久99精品视频一区97| 最近2019年中文视频免费在线观看| 国产亚洲人成网站在线观看| 精品久久久久久| 欧美激情欧美激情在线五月| 国产精品99久久99久久久二8| 少妇高潮 亚洲精品| 欧美夫妻性生活视频| 91成人免费观看网站| 91精品久久久久久| 国产精品电影在线观看| 夜夜嗨av一区二区三区免费区| 成人性生交xxxxx网站| 亚洲第一中文字幕| 成人性教育视频在线观看| 日韩免费观看网站| 精品亚洲国产成av人片传媒| 精品美女永久免费视频| 在线视频免费一区二区| 成人伊人精品色xxxx视频| 欧美在线视频在线播放完整版免费观看| 久久av红桃一区二区小说| 亚洲va欧美va在线观看| 日韩av一卡二卡| 欧美成人sm免费视频| 黑人狂躁日本妞一区二区三区| 精品久久久久久亚洲精品| 日韩大片在线观看视频| 亚洲福利在线看| 国产亚洲精品久久久久久牛牛| 欧美激情女人20p| 亚洲第一男人天堂| 欧美国产日韩免费| 国产成人在线精品| 在线观看亚洲视频| 国产精品永久免费视频| 欧美电影在线观看高清| 亚洲激情中文字幕| 2019亚洲日韩新视频| 成人午夜两性视频| 成人黄色网免费| 亚洲欧洲日产国产网站| 91免费人成网站在线观看18| 精品美女久久久久久免费| 久久久久在线观看|