程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> [C#] string 與 String,大 S 與小 S 之間有關字符串的秘密(整理中...),

[C#] string 與 String,大 S 與小 S 之間有關字符串的秘密(整理中...),

編輯:C#入門知識

[C#] string 與 String,大 S 與小 S 之間有關字符串的秘密(整理中...),


string 與 String,大 S 與小 S 之間有關字符串的秘密

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

 

小寫 string 與大寫 String

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

 

聲明與初始化 string

  請看示例:

 1         static void Main(string[] args)
 2         {
 3             // 聲明但不初始化 
 4             string msg1;
 5 
 6             // 聲明並初始化為 null 
 7             string msg2 = null;
 8 
 9             // 作為一個空字符串進行初始化,用 Empty(空) 常量而不是字面值的 ""(空)
10             string msg3 = String.Empty;
11 
12             // 用正則的字符串字面值進行初始化 
13             string oldPath = "c:\\windows";
14 
15             // 直接以字符串初始化 
16             string newPath = @"c:\windows";
17 
18             // 也可以使用 System.String
19             String content = "Hello World!";
20 
21             // 使用 const 防止 msg4 被篡改
22             const string msg4 = "I'm const!";
23 
24             // 可以使用隱式類型 var
25             var msg5 = "Hi!";
26 
27             // 使用 String 構造器進行初始化
28             char[] letters = { 'A', 'B', 'C' };
29             string alphabet = new String(letters);
30 
31             Console.Read();
32         }

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

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

 

string 的不可變性

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

  示例一:

 1         static void Main(string[] args)
 2         {
 3             var s1 = "Hi!";
 4             var s2 = "Fanguzai!";
 5 
 6             //拼接 s1 和 s2,並且修改 s1 指向的值
 7             s1 += s2;   //即 s1 = s1 + s2;
 8 
 9             Console.WriteLine(s1);
10             Console.Read();
11         }

1 static void Main(string[] args) 2 { 3 var s1 = "Hi! "; 4 var s2 = s1; 5 6 //在 s1 重新賦值後,這次沒有重新修改 s2 指向的值 7 s1 += "Fanguzai!"; //即 s1 = s1 + "Fanguzai!"; 8 9 Console.WriteLine(s2); 10 Console.Read(); 11 }

1 static void Main(string[] args) 2 { 3 var coluString = "Col1\tCol2\tCol3"; 4 var rowString = "Row1\r\nRow2\r\nRow3"; 5 6 Console.WriteLine(coluString); 7 Console.WriteLine("====="); 8 Console.WriteLine(rowString); 9 Console.Read(); 10 }

1 static void Main(string[] args) 2 { 3 var path = @"C:\Windows"; 4 var text = @"Are you Fanguzai? 5 I'm Fanguzai!"; 6 7 Console.WriteLine(path); 8 Console.WriteLine("====="); 9 Console.WriteLine(text); 10 Console.Read(); 11 }

 

string 的轉義序列

可提高性能的 StringBuilder 

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

1         static void Main(string[] args)
2         {
3             var sb = new StringBuilder("~ Hi! Fanguzai!");
4             sb[0] = '^';
5 
6             Console.WriteLine(sb);
7             Console.Read();
8         }

【博主】反骨仔

【出處】http://www.cnblogs.com/liqingwen/p/6155790.html 

【參考】微軟官方文檔

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved