Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Подробный текст —
Специальный @ символ служит в качестве подробного идентификатора. Используйте его следующим образом:
Чтобы указать, что строковый литерал интерпретируется подробно. Символ
@в этом экземпляре определяет подробный строковый литерал. Простые escape-последовательности (например"\\", для обратной косой черты), шестнадцатеричные escape-последовательности (например, для прописной буквы А) и escape-последовательности Юникода (например"\x0041""\u0041", для верхнего регистра А) интерпретируются буквально. Только escape-последовательность кавычки ("") не интерпретируется буквально; она создает один двойный кавычки. Кроме того, в случае с интерполированными последовательностями строковых фигурных фигурных скобок ({{и}}) не интерпретируются буквально; они создают символы с одной фигурной скобкой. В следующем примере определяются два одинаковых пути к файлам, один с помощью обычного строкового литерала и другого с помощью строкового литерала. Это одно из наиболее распространенных применений строковых литералов.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.txtВ следующем примере показано, как определить обычный строковый литерал и подробный строковый литерал, содержащий идентичные последовательности символов.
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"Использование ключевых слов C# в качестве идентификаторов. Символ
@префиксирует элемент кода, который компилятор интерпретирует как идентификатор, а не ключевое слово C#. В следующем примере символ используется для определения идентификатора, который он использует@в циклеfor.forstring[] @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!Чтобы компилятор мог различать атрибуты в случаях конфликта именования. Атрибут — это класс, производный от Attribute. Его имя типа обычно включает атрибут суффикса, хотя компилятор не применяет это соглашение. Вы можете ссылаться на атрибут в коде по имени полного типа (например,
[InfoAttribute]) или по сокращенном имени (например,[Info]). Однако конфликт именования возникает, если два сокращенных имена типов атрибутов идентичны, и одно имя типа включает суффикс атрибута , но другой не. Например, следующий код не может компилироваться, так как компилятор не может определить, применяется лиInfoInfoAttributeатрибут к классуExample. Дополнительные сведения см. в разделе 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() { } }