string (C# 參考)
string 型別表示零個或多個 Unicode 字元序列。 string 是 .NET Framework 中 String 的別名。
雖然 string 是參考型別 (Reference Type),但是等號比較運算子 (== 和 !=) 的定義目的是比較 string 物件 (而不是參考) 的值。 這讓字串相等的測試更具直覺性。 例如:
string a = "hello";
string b = "h";
// Append to contents of 'b'
b += "ello";
Console.WriteLine(a == b);
Console.WriteLine((object)a == (object)b);
這會先顯示 "True" 然後再顯示 "False",因為字串的內容相同但是 a 和 b 並未參考相同的字串執行個體。
+ 運算子串連字串:
string a = "good " + "morning";
這會建立包含 "good morning" 的字串物件。
字串是「不可變動的」(Immutable),這表示字串物件建立之後,將無法變更該物件的內容 (雖然語法看起來好像允許您變更)。 例如,當您撰寫這段程式碼時,編譯器 (Compiler) 實際上會建立新的字串物件來保存新的字串序列 (Sequence),而且新物件會指派至 b。 接著字串「h」就可進行記憶體回收。
string b = "h";
b += "ello";
[] 運算子可以用來以唯讀方式存取 string 的個別字元:
string str = "test";
char x = str[2]; // x = 's';
字串常值是 string 型別而且可以寫成兩種格式,以引號括住和以 @ 括住。 以引號括住的字串常值由雙引號 (") 包圍起來:
"good morning" // a string literal
字串常值可以包含任何字元常值。 也包括逸出序列。 下列範例使用 \\ 反斜線的逸出序列、\u0066 表示字母 f,而 \n 表示新的一行。
string a = "\\\u0066\n";
Console.WriteLine(a);
注意事項 |
---|
逸出程式碼 \udddd (其中 dddd 是四位數的數字) 表示 Unicode 字元 U+dddd。八位數字的 Unicode 逸出程式碼也可以辨識:\Udddddddd。 |
逐字字串常值是以 @ 做為開頭並放在雙引號裡。 例如:
@"good morning" // a string literal
逐字字串的優點是「不會」處理逸出序列,這讓它很容易撰寫,例如,完整檔案名稱:
@"c:\Docs\Source\a.txt" // rather than "c:\\Docs\\Source\\a.txt"
若要在 @ 括住的字串裡包含雙引號,請重複雙引號:
@"""Ahoy!"" cried the captain." // "Ahoy!" cried the captain.
@ 符號的另一種用途是使用屬於 C# 關鍵字之參考的 (/reference) 識別項。
如需 C# 中字串的詳細資訊,請參閱字串 (C# 程式設計手冊)。
範例
class SimpleStringTest
{
static void Main()
{
string a = "\u0068ello ";
string b = "world";
Console.WriteLine( a + b );
Console.WriteLine( a + b == "Hello World" ); // == performs a case-sensitive comparison
}
}
/* Output:
hello world
False
*/
C# 語言規格
如需詳細資訊,請參閱<C# 語言規格>。語言規格是 C# 語法及用法的限定來源。