C# | Verbatim String Literal - @ - GeeksforGeeks

16 Oct, 2019
In C#, a verbatim string is created using a special symbol @. @ is known as a verbatim identifier. If a string contains @ as a prefix followed by double quotes, then compiler identifies that string as a verbatim string and compile that string. The main advantage of @ symbol is to tell the string constructor to ignore escape characters and line breaks. There is mainly three uses of @ symbol which is as follows:
Use 1: Keyword as an IdentifierThis symbol allows using a keyword as an identifier. The @ symbol prefixes the keyword, so the compiler takes keyword as an identifier without any error as shown in the below example:
Example:
// C# program to illustrate// the use of @ by using keyword// as an identifierusing 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: PHP
Element of Array: Java
Element of Array: Python

Use 2: For printing the escape sequences in string literals and also using the line breaks etc. in a string literal without any escape sequence.
If one will put the escape sequence like “\\” (for backslash), “\u” (Unicode escape sequence), “\x” (hexadecimal escape sequence) etc. in a string literal without using @ symbol then these sequences will be interpreted by compiler automatically. But “” (double quotes) are not interpreted literally. Its like a string interpolation. Let’s see different cases with and without @ symbol.
Case 1:// taking a string literal and 
// try to print double quotes
string str1 = """";

// printing output
// this will give compile
// time error as Unexpected 
// symbol `' 
Console.WriteLine(str1);
In the above program, the double quotes inside double quotes as a string literal are interpreted as a single quotation mark.
// taking a string literal and 
// try to print double quotes
string str1 = """";

// printing output
// this will give compile
// time error as Unexpected 
// symbol `' 
Console.WriteLine(str1);

In the above program, the double quotes inside double quotes as a string literal are interpreted as a single quotation mark.
Case 2:// taking a string literal prefixes
// with @ and try to print double quotes
string str1 = @"""";

// printing output
// this will output as "
Console.WriteLine(str1);
In the above program, the output is double quote(“) not “”
// taking a string literal prefixes
// with @ and try to print double quotes
string str1 = @"""";

// printing output
// this will output as "
Console.WriteLine(str1);

In the above program, the output is double quote(“) not “”
Case 3:// taking a string in which we are storing 
// some location of file but \Testing will 
// interpreted as eascape sequence \T 
// similarly \N
string 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);

// taking a string in which we are storing 
// some location of file but \Testing will 
// interpreted as eascape sequence \T 
// similarly \N
string 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);

Case 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\Target
Console.WriteLine(str1);

// 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\Target
Console.WriteLine(str1);

Program:
// C# program to illustrate// the use of @ in terms of // escape sequences and new // line and tabusing 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 GeeksforGeeks \ 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 GeeksforGeeks \ 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                               C          C++      Java       Python");    }}
String 2 is: \\welcome \to GeeksforGeeks \ portal \
String 3 is :This is 
 C# non verbatim string
String 4 is :This is \n C# verbatim string
Without Tab Sequence and New Line Character
                               C          C++      Java       Python

nidhi_biet
CSharp-string
C#
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Difference between Abstract Class and Interface in C#
String.Split() Method in C# with Examples
C# | How to check whether a List contains a specified element
C# | IsNullOrEmpty() Method
C# | Arrays of Strings
C# | Delegates
C# | Abstract Classes
Difference between Ref and Out keywords in C#
Extension Method in C#
C# | Replace() Method