Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Texto textual:
El @ carácter especial actúa como un identificador textual. Se usa de las siguientes maneras:
Para indicar que un literal de cadena se va a interpretar textualmente. El
@carácter de esta instancia define un literal de cadena textual. Las secuencias de escape simples (como"\\"para una barra diagonal inversa), las secuencias de escape hexadecimal (como"\x0041"para una A mayúscula) y las secuencias de escape Unicode (como"\u0041"para una A mayúscula) se interpretan literalmente. Solo una secuencia de escape de comillas ("") no se interpreta literalmente; genera una comilla doble. Además, en el caso de una secuencia de escape de llaves de cadena interpolada textualmente ({{y}}) no se interpretan literalmente; generan caracteres de llave única. En el ejemplo siguiente se definen dos rutas de acceso de archivo idénticas, una mediante un literal de cadena normal y la otra mediante un literal de cadena textual. Se trata de uno de los usos más comunes de literales de cadena textual.string filename1 = @"c:\documents\files\u0066.txt"; string filename2 = "c:\\documents\\files\\u0066.txt"; Console.WriteLine(filename1); Console.WriteLine(filename2); // The example displays the following output: // c:\documents\files\u0066.txt // c:\documents\files\u0066.txtEn el ejemplo siguiente se muestra el efecto de definir un literal de cadena normal y un literal de cadena textual que contenga secuencias de caracteres idénticas.
string s1 = "He said, \"This is the last \u0063hance\x0021\""; string s2 = @"He said, ""This is the last \u0063hance\x0021"""; Console.WriteLine(s1); Console.WriteLine(s2); // The example displays the following output: // He said, "This is the last chance!" // He said, "This is the last \u0063hance\x0021"Para usar palabras clave de C# como identificadores. El
@carácter prefijos un elemento de código que el compilador va a interpretar como identificador en lugar de una palabra clave de C#. En el ejemplo siguiente se usa el@carácter para definir un identificador denominadoforque usa en unforbucle .string[] @for = { "John", "James", "Joan", "Jamie" }; for (int ctr = 0; ctr < @for.Length; ctr++) { Console.WriteLine($"Here is your gift, {@for[ctr]}!"); } // The example displays the following output: // Here is your gift, John! // Here is your gift, James! // Here is your gift, Joan! // Here is your gift, Jamie!Para permitir que el compilador distinga entre atributos en casos de conflicto de nomenclatura. Un atributo es una clase que deriva de Attribute. Su nombre de tipo suele incluir el sufijo Attribute, aunque el compilador no aplica esta convención. A continuación, se puede hacer referencia al atributo en el código por su nombre de tipo completo (por ejemplo,
[InfoAttribute]o por su nombre abreviado (por ejemplo,[Info]). Sin embargo, se produce un conflicto de nomenclatura si dos nombres de tipo de atributo abreviados son idénticos y un nombre de tipo incluye el sufijo Attribute , pero el otro no. Por ejemplo, el código siguiente no se puede compilar porque el compilador no puede determinar si elInfoatributo oInfoAttributese aplica a laExampleclase . Para obtener más información, consulte CS1614.using System; [AttributeUsage(AttributeTargets.Class)] public class Info : Attribute { private string information; public Info(string info) { information = info; } } [AttributeUsage(AttributeTargets.Method)] public class InfoAttribute : Attribute { private string information; public InfoAttribute(string info) { information = info; } } [Info("A simple executable.")] // Generates compiler error CS1614. Ambiguous Info and InfoAttribute. // Prepend '@' to select 'Info' ([@Info("A simple executable.")]). Specify the full name 'InfoAttribute' to select it. public class Example { [InfoAttribute("The entry point.")] public static void Main() { } }