Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Testo verbatim:
Il @ carattere speciale funge da identificatore verbatim. È possibile usarlo nei modi seguenti:
Per indicare che un valore letterale stringa deve essere interpretato verbatim. Il
@carattere in questa istanza definisce un valore letterale stringa verbatim. Le sequenze di escape semplici (ad esempio"\\"per una barra rovesciata), le sequenze di escape esadecimali (ad esempio"\x0041"per una A maiuscola) e le sequenze di escape Unicode (ad esempio"\u0041"per una A maiuscola) vengono interpretate letteralmente. Solo una sequenza di escape tra virgolette ("") non viene interpretata letteralmente; produce una virgoletta doppia. Inoltre, nel caso di sequenze di escape di parentesi graffe interpolate verbatim ({{e}}) non vengono interpretate letteralmente, ma producono caratteri di parentesi graffa singola. Nell'esempio seguente vengono definiti due percorsi di file identici, uno usando un valore letterale stringa regolare e l'altro usando un valore letterale stringa verbatim. Si tratta di uno degli usi più comuni dei valori letterali stringa verbatim.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.txtNell'esempio seguente viene illustrato l'effetto della definizione di un valore letterale stringa regolare e di un valore letterale stringa verbatim che contengono sequenze di caratteri identiche.
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"Per usare parole chiave C# come identificatori. Il
@carattere prefissi un elemento di codice che il compilatore deve interpretare come identificatore anziché come parola chiave C#. Nell'esempio seguente viene usato il@carattere per definire un identificatore denominatoforusato in unforciclo.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!Per consentire al compilatore di distinguere tra attributi in caso di conflitto di denominazione. Un attributo è una classe che deriva da Attribute. Il nome del tipo include in genere l'attributo suffisso, anche se il compilatore non applica questa convenzione. È quindi possibile fare riferimento all'attributo nel codice in base al nome completo del tipo ( ad esempio,
[InfoAttribute]o al nome abbreviato , ad esempio[Info]). Tuttavia, si verifica un conflitto di denominazione se due nomi di tipi di attributo abbreviati sono identici e un nome di tipo include il suffisso Attribute , ma l'altro non. Ad esempio, il codice seguente non viene compilato perché il compilatore non è in grado di determinare se l'attributoInfooInfoAttributeviene applicato allaExampleclasse . Per altre informazioni, vedere 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() { } }