在C#中,字符串是用于表示文本的一系列字符。它可以是字符,单词 或 用双引号“引起来的长段落。以下是字符串文字。
示例:字符串字面量
"S"
"String"
"This is a string."
C#提供String数据类型来存储字符串字面量。可以声明字符串类型的变量并分配字符串字面量,如下所示。
示例:字符串类型变量
string ch = "S";
string word = "String";
string text = "This is a string.";
字符串对象在内存中的最大大小为2GB,约为10亿字符。然而,在实际应用中,它对计算机的CPU和内存的依赖较少。
有两种方法可以在C#中声明字符串变量。使用 System.String 类和 string 关键字。两者是相同的,没有区别。
示例:String 和 string
string str1 = "Hello"; // 使用字符串关键字
String str2 = "Hello"; // 使用System.String类
在C#中,字符串是字符的集合或数组。因此,可以使用char数组创建字符串,也可以像char数组一样访问字符串。
示例:字符串作为字符数组
char[] chars = {'H','e','l','l','o'};
string str1 = new string(chars);
String str2 = new String(chars);
foreach (char c in str1)
{
Console.WriteLine(c);
}
特殊字符
现实世界中的文本可以包含任何字符。 在C#中,因为字符串用双引号引起来,所以它不能在字符串中包含(”)。以下内容将给出编译时错误。
示例:无效的字符串
string text = "This is a "string" in C#.";
C#在这些特殊字符之前将转义字符\(反斜杠)包括在字符串中。
在双引号前使用反斜杠\和一些特殊字符(如\、\n、\r、\t等)将其包含在字符串中。
示例:转义符 \
string text = "This is a \"string\" in C#.";
string str = "xyzdef\\rabc";
string path = "\\\\mypc\\ shared\\project";
但是,为每个特殊字符加上\将非常繁琐。用@前缀的字符串表示应将其视为字面量,并且不能转义任何字符。
示例:转义序列
string str = @"xyzdef\rabc";
string path = @"\\mypc\shared\project";
string email = @"[email protected]";
使用 @ 和 \ 声明多行字符串。
示例:多行字符串
string str = @"this is a \
multi line \
string";
请注意,在字符串中必须使用反斜杠才能允许出现双引号 ”。@仅适用于C#中的特殊字符。
string text = @"This is a "string." in C#."; // 错误
string text = @"This is a \"string\" in C#."; // 错误
string text = "This is a \"string\" in C#."; // 有效
字符串串联
多个字符串可以用 + 运算符连接。
示例:字符串串联
string name = "Mr." + "James " + "Bond" + ", Code: 007";
string firstName = "James";
string lastName = "Bond";
string code = "007";
string agent = "Mr." + firstName + " " + lastName + ", Code: " + code;
字符串在C#中是不可变的。这意味着它是只读的,一旦在内存中创建就无法更改。每次串联字符串时,.NET CLR都会为串联的字符串创建一个新的内存位置。因此,如果串联五个以上的字符串,建议使用StringBuilder而不是字符串。
字符串插值
字符串插值是连接字符串的更好方法。我们使用+符号将字符串变量与静态字符串连接在一起。
C#6包含一个特殊字符$,用于标识插值的字符串。插值字符串是静态字符串和字符串变量的混合,其中字符串变量应放在{}括号中。
示例:字符串插值
string firstName = "James";
string lastName = "Bond";
string code = "007";
string fullName = $"Mr. {firstName} {lastName}, Code: {code}";
在上述插值示例中,$表示插值的字符串,而{}包括要与字符串合并的字符串变量。
使用两个大括号“{{”或“}}”在字符串中包含 { 或 } 。