C# | Verbatim String Literal – @
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 Identifier
This 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 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: 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.
- 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 “”
- 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);
- 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);
Program:
// 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 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