Tutorialspoint.dev

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);
                }
    }
}

Output:

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 ouput 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:TestingNewTarget";
    
    // 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:TestingNewTarget";
    
    // printing str1 will give output as 
    // \C:TestingNewTarget
    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 o 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 o 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 C# non verbatim string";
        Console.WriteLine("String 3 is :{0}", S3);
  
        // By using @ symbol /n does not processed
        string S4 = @"This is 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");
    }
}

Output:

String 2 is: \welcome 	o GeeksforGeeks  portal 
String 3 is :This is 
 C# non verbatim string
String 4 is :This is 
 C# verbatim string
Without Tab Sequence and New Line Character
                               C          C++      Java       Python


This article is attributed to GeeksforGeeks.org

leave a comment

code

0 Comments

load comments

Subscribe to Our Newsletter