🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# string(C# 参考) **string** 类型表示一个字符序列(零个或更多 Unicode 字符)。 **string** 是 .NET Framework 中 [String](https://msdn.microsoft.com/zh-CN/library/system.string.aspx) 的别名。 尽管 **string** 是引用类型,但定义相等运算符(**==** 和 **!=**)是为了比较 **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”的字符串对象。 字符串是不可变的,即:字符串对象在创建后,尽管从语法上看您似乎可以更改其内容,但事实上并不可行。例如,编写此代码时,编译器实际上会创建一个新字符串对象来保存新的字符序列,且新对象将赋给 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); ``` | ![](https://box.kancloud.cn/2016-01-31_56adb62c1380a.jpg) 注意 | | :-- | | 转义码 \u_dddd_(其中 _dddd_ 是一个四位数)表示 Unicode 字符 U+_dddd_。此外还识别 8 位 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](https://msdn.microsoft.com/zh-CN/library/yabyz3h4.aspx)) 标识符。 有关 C# 中字符串的更多信息,请参见[字符串(C# 编程指南)](https://msdn.microsoft.com/zh-CN/library/ms228362.aspx)。 ``` 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# 语言规范](https://msdn.microsoft.com/zh-CN/library/ms228593.aspx)。该语言规范是 C# 语法和用法的权威资料。 ## 请参阅 [C# 参考](https://msdn.microsoft.com/zh-CN/library/618ayhy6.aspx) [C# 编程指南](https://msdn.microsoft.com/zh-CN/library/67ef8sbd.aspx) [在 .NET Framework 中使用字符串的最佳做法](https://msdn.microsoft.com/zh-CN/library/dd465121.aspx) [C# 关键字](https://msdn.microsoft.com/zh-CN/library/x53a06bb.aspx) [C# 编程指南](https://msdn.microsoft.com/zh-CN/library/67ef8sbd.aspx) [引用类型(C# 参考)](https://msdn.microsoft.com/zh-CN/library/490f96s2.aspx) [值类型(C# 参考)](https://msdn.microsoft.com/zh-CN/library/s1ax56ch.aspx) [.NET Framework 中的基本字符串操作](https://msdn.microsoft.com/zh-CN/library/a292he7t.aspx) [在 .NET Framework 中创建新字符串](https://msdn.microsoft.com/zh-CN/library/3b23dab9.aspx) [设置数值结果表的格式(C# 参考)](https://msdn.microsoft.com/zh-CN/library/s8s7t687.aspx)