C# | Literal de string textual – @

En C#, una string textual se crea usando un símbolo especial @ . @ se conoce como un identificador textual. Si una string contiene @ como prefijo seguido de comillas dobles, el compilador identifica esa string como una string textual y la compila. La principal ventaja del símbolo @ es decirle al constructor de strings que ignore los caracteres de escape y los saltos de línea. Hay principalmente tres usos del símbolo @ que son los siguientes:

Uso 1: Palabra clave como identificador
Este símbolo permite utilizar una palabra clave como identificador . El símbolo @ precede a la palabra clave, por lo que el compilador toma la palabra clave como un identificador sin ningún error, como se muestra en el siguiente ejemplo:

Ejemplo:

// 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);
                }
    }
}
Producción:

Element of Array: C#
Element of Array: PHP
Element of Array: Java
Element of Array: Python

Uso 2: Para imprimir las secuencias de escape en strings literales y también usar los saltos de línea, etc. en una string literal sin ninguna secuencia de escape.

Si se coloca la secuencia de escape como “\\” (para barra invertida), “\u” (secuencia de escape Unicode), “\x” (secuencia de escape hexadecimal), etc. en una string literal sin usar el símbolo @, entonces estas secuencias ser interpretado por el compilador automáticamente. Pero «» (comillas dobles) no se interpretan literalmente. Es como una interpolación de strings. Veamos diferentes casos con y sin símbolo @.

  • Caso 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);
    

    En el programa anterior, las comillas dobles dentro de comillas dobles como un literal de string se interpretan como una comilla simple.

  • Caso 2:
    // taking a string literal prefixes
    // with @ and try to print double quotes
    string str1 = @"""";
    
    // printing output
    // this will output as "
    Console.WriteLine(str1);
    

    En el programa anterior, la salida son comillas dobles ( « ) no «»

  • Caso 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);
    
  • Caso 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);
    

Programa:

// 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");
    }
}
Producción:

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

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *