C# 用转义序列连接两个字符串

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将被转义并保持原样。@“是

我使用C#连接两个带有转义序列的字符串,我想跳过它们,所以在每个字符串之前使用@symbol。看起来是这样的:

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()
      方法只是将两个字符串按原样连接起来。它不能解释它们的内容。因此反斜杠字符将保留在那里。

      您可以运行代码并找出答案吗?您可以运行代码并找出答案吗?