在C#中, 使用特殊符号创建逐字字符串@。 @被称为逐字标识符。如果一个字符串包含@作为前缀, 后跟双引号, 则编译器将该字符串标识为逐字字符串, 然后编译该字符串。 @符号的主要优点是告诉字符串构造函数忽略转义符和换行符。 @符号主要有以下三种用法:
使用1:
关键字作为标识符
该符号允许使用
关键字作为标识符
。 @符号是关键字的前缀, 因此编译器将关键字作为标识符, 没有任何错误, 如下例所示:
例子:
// C# program to illustrate
// the use of @ by using keyword
// as an identifier
using System;
public class GFG {// Main method
static public void Main()
{// Creating and initializing the array
// here 'for' keyword is used as
// an identifier by using @ symbol
string [] @ for = { "C#" , "PHP" , "Java" , "Python" };
// as and for keywords is
// as an identifier
// using @ symbol
foreach ( string @ as in @ for )
{
Console.WriteLine( "Element of Array: {0}" , @ as );
}
}
}
输出如下:
Element of Array: C#Element of Array: PHPElement of Array: JavaElement of Array: Python
使用2: 用于在字符串文字中打印转义序列, 以及在没有任何转义序列的字符串文字中使用换行符等。
如果有人将转义序列" \\"(用于反斜杠), " \ u"(Unicode转义序列), "\X"(十六进制转义序列)等, 而不使用@符号, 则这些字符串将由编译器自动解释。但是, ""(双引号)不是按字面意义解释的。它就像一个字符串插值。让我们看看带有@符号和不带有@符号的不同情况。
情况1:
// taking a string literal and // try to print double quotesstring str1 = """";
// printing output// this will give compile// time error as Unexpected // symbol `' Console.WriteLine(str1);
在上面的程序中, 双引号内的双引号作为字符串文字被解释为单引号。
情况2:
// taking a string literal prefixes// with @ and try to print double quotesstring str1 = @"""";
// printing output// this will output as "Console.WriteLine(str1);
在上面的程序中, 输出是双引号(")不""
情况3:
// taking a string in which we are storing // some location of file but \Testing will // interpreted as eascape sequence \T // similarly \Nstring str1 = "\\C:\Testing\New\Target";
// printing str1// this will give compile time error as// Unrecognized escape sequence `\T'// Unrecognized escape sequence `\N'// Unrecognized escape sequence `\T'Console.WriteLine(str1);
情况4:
// taking a string and prefix literal with @ symbol. // Storing some location of file string str1 = @"\\C:\Testing\New\Target";
// printing str1 will give output as // \\C:\Testing\New\TargetConsole.WriteLine(str1);
程序:
// C# program to illustrate
// the use of @ in terms of
// escape sequences and new
// line and tab
using System;
public class GFG {// Main method
static public void Main()
{// If you use the below commented
// the part then this will give
// Unrecognized escape sequence error
// string S1 = "\\welcome \to lsbin \ portal \";
// Console.WriteLine("String 1 is :{0}", S1);
// By using @ in the given string
// it runs smoothly because
// @ symbol tells the compiler to
// ignore all escape sequences
string S2 = @"\\welcome \to lsbin \ portal \" ;
Console.WriteLine( "String 2 is: {0}" , S2);
// printing new line character in string literal
// but it will make the string to break
// into a new line, see output
string S3 = "This is \n C# non verbatim string" ;
Console.WriteLine( "String 3 is :{0}" , S3);
// By using @ symbol /n does not processed
string S4 = @"This is \n C# verbatim string" ;
Console.WriteLine( "String 4 is :{0}" , S4);
// printing a string literal contains
// tabs and new line without using
// any escape sequence
Console.WriteLine( @"Without Tab Sequence and New Line Character
CC++JavaPython" );
}
}
【C#逐字字符串字面量– @用法介绍】输出如下:
String 2 is: \\welcome \to lsbin \ portal \String 3 is :This is C# non verbatim stringString 4 is :This is \n C# verbatim stringWithout Tab Sequence and New Line CharacterCC++JavaPython
推荐阅读
- 算法题(选择k个数组元素,使最大值和最小值之差最小)
- PHP gmp_div_qr()函数用法详细介绍
- 端口地址转换(PAT)映射到专用IP详细介绍
- Salesforce面试经验|在校园
- 操作系统常见问题集锦和答案|S10
- 操作系统常见问题和答案合集|S11
- 操作系统常见问题和考试问题|S12
- 操作系统相关考试问题|S13