C# 用转义序列连接两个字符串
我使用C#连接两个带有转义序列的字符串,我想跳过它们,所以在每个字符串之前使用@symbol。看起来是这样的:C# 用转义序列连接两个字符串,c#,string,escaping,concatenation,C#,String,Escaping,Concatenation,我使用C#连接两个带有转义序列的字符串,我想跳过它们,所以在每个字符串之前使用@symbol。看起来是这样的: string firstString = @"Use \n for line break. "; string secondString = @"Use \b for backspace"; return firstString + secondString; 问题是:返回值中是否会跳过转义序列 @“是一个逐字逐句字符串,它将的转义序列视为文本 因此\n\b将被转义并保持原样。@“是
string firstString = @"Use \n for line break. ";
string secondString = @"Use \b for backspace";
return firstString + secondString;
问题是:返回值中是否会跳过转义序列 @“
是一个逐字逐句字符串,它将的转义序列视为文本
因此\n
\b
将被转义并保持原样。@“
是一个逐字字符串,它将转义序列视为文本
因此,
\n
\b
将被转义并保持原样。不,它将只打印出来,因为它们由于“@”符号而被视为普通文本
为什么不直接运行代码呢?不,它只会将它们打印出来,因为它们由于带有“@”符号而被视为普通文本
为什么不直接运行代码呢?其他答案当然是正确的。明确, 这包括在: 2.4.4.5字符串文字 C#支持两种形式的字符串文字:常规字符串文字和逐字字符串文字 常规字符串文字由零个或多个用双引号括起来的字符组成,如“hello”,可能包括简单转义序列(例如\t用于制表符)以及十六进制和Unicode转义序列 逐字字符串文字由@字符后跟双引号字符、零个或多个字符以及结束双引号字符组成。一个简单的例子是@“你好”。在逐字字符串文字中,分隔符之间的字符将逐字解释,唯一的例外是引号转义序列。特别是,简单转义序列以及十六进制和Unicode转义序列不以逐字字符串文字处理。逐字字符串文字可以跨越多行 因此,当您将其与verbtaim字符串literal一起使用时,就像
string firstString = @"Use \n for line break. ";
string secondString = @"Use \b for backspace";
returns firstString + secondString;
string firstString = "Use \n for line break. ";
string secondString = "Use \b for backspace";
returns firstString + secondString;
结果将是
Use \n for line break. Use \b for backspace
Use
for line break. Use for backspace
当您使用常规字符串文字时,如
string firstString = @"Use \n for line break. ";
string secondString = @"Use \b for backspace";
returns firstString + secondString;
string firstString = "Use \n for line break. ";
string secondString = "Use \b for backspace";
returns firstString + secondString;
结果将是
Use \n for line break. Use \b for backspace
Use
for line break. Use for backspace
因为\n
是新行转义序列,\b
是退格转义序列。对于所有列表,请查看
其他答案当然是正确的。明确, 这包括在: 2.4.4.5字符串文字 C#支持两种形式的字符串文字:常规字符串文字和逐字字符串文字 常规字符串文字由零个或多个用双引号括起来的字符组成,如“hello”,可能包括简单转义序列(例如\t用于制表符)以及十六进制和Unicode转义序列 逐字字符串文字由@字符后跟双引号字符、零个或多个字符以及结束双引号字符组成。一个简单的例子是@“你好”。在逐字字符串文字中,分隔符之间的字符将逐字解释,唯一的例外是引号转义序列。特别是,简单转义序列以及十六进制和Unicode转义序列不以逐字字符串文字处理。逐字字符串文字可以跨越多行 因此,当您将其与verbtaim字符串literal一起使用时,就像
string firstString = @"Use \n for line break. ";
string secondString = @"Use \b for backspace";
returns firstString + secondString;
string firstString = "Use \n for line break. ";
string secondString = "Use \b for backspace";
returns firstString + secondString;
结果将是
Use \n for line break. Use \b for backspace
Use
for line break. Use for backspace
当您使用常规字符串文字时,如
string firstString = @"Use \n for line break. ";
string secondString = @"Use \b for backspace";
returns firstString + secondString;
string firstString = "Use \n for line break. ";
string secondString = "Use \b for backspace";
returns firstString + secondString;
结果将是
Use \n for line break. Use \b for backspace
Use
for line break. Use for backspace
因为\n
是新行转义序列,\b
是退格转义序列。对于所有列表,请查看
firstString+secondString
是String.Concat(firstString,secondString)的快捷方式
Concat()
方法只是将两个字符串按原样连接起来。它不能解释它们的内容。因此反斜杠字符将保留在那里。firstString+secondString
是String.Concat(firstString,secondString)
Concat()
方法只是将两个字符串按原样连接起来。它不能解释它们的内容。因此反斜杠字符将保留在那里。您可以运行代码并找出答案吗?您可以运行代码并找出答案吗?