C# 支持兩種形式的字符串:規則字符串和逐字字符串。
規則字符串由包含在雙引號中的零個或多個字符組成(如 "hello
"),並且可以包含簡單轉義序列(如表示制表符的 \t
)、十六進制轉義序列和 Unicode 轉義序列。
逐字字符串由 @
字符後跟開始的雙引號字符、零個或多個字符以及結束的雙引號字符組成。一個簡單的示例就是 @"hello"
。在逐字字符串中,分隔符之間的字符逐字解釋,唯一的例外是“引號轉義序列”。具體說來,在逐字字符串中不處理簡單轉義序列以及十六進制和 Unicode 轉義序列。逐字字符串可以跨多行。
"
(@" 逐字的字符串字符可選 ")規則字符串字符中跟在反斜槓字符 (\
) 後面的字符必須是下列字符之一:'
、"
、\
、0
、a
、b
、f
、n
、r
、t
、u
、U
、x
、v
。否則將發生編譯時錯誤。
示例
string a = "hello, world"; // hello, world string b = @"hello, world"; // hello, world string c = "hello \t world"; // hello world string d = @"hello \t world"; // hello \t world string e = "Joe said \"Hello\" to me"; // Joe said "Hello" to me string f = @"Joe said ""Hello"" to me"; // Joe said "Hello" to me string g = "\\\\server\\share\\file.txt"; // \\server\share\file.txt string h = @"\\server\share\file.txt"; // \\server\share\file.txt string i = "one\r\ntwo\r\nthree"; string j = @"one two three";
顯示了各種不同的字符串。最後一個字符串 j
是跨多行的逐字字符串。引號之間的字符(包括空白,如換行符等)也逐字符保留。
由於十六進制轉義序列可以包含數目可變的十六進制數字,因此字符串 "\x123"
只包含一個具有十六進制值 123 的字符。若要創建一個包含具有十六進制值 12 的字符,後跟一個字符 3 的字符串,可以改寫為 "\x00123"
或 "\x12" + "3"
。
“字符串”的類型為 string
。
[1] [2] 下一頁
每個字符串不一定產生新的字符串實例。當根據字符串相等運算符(第 7.9.7 節)確認為相等的兩個或更多個字符串出現在同一個程序集中時,這些字符串引用相同的字符串實例。例如,
class Test { static void Main() { object a = "hello"; object b = "hello"; System.Console.WriteLine(a == b); } }
產生的輸出為 True
,這是因為兩個字符串引用相同的字符串實例。
上一頁 [1] [2]