Поделиться через


#line (Справочник по C#)

Обновлен: Ноябрь 2007

#line позволяет изменить номер строки компилятора и (необязательно) вывод имени файла для ошибок и предупреждений. В этом примере показано как сообщить о двух предупреждениям, связанных с номерами строк. Директива #line 200 принудительно назначает номер строки 200 (хотя по умолчанию это номер 7). Другая строка (с номером 9) соответствует обычной последовательности как результат директивы по умолчанию #line.

class MainClass
{
    static void Main() 
    {
#line 200
        int i;    // CS0168 on line 200
#line default
        char c;   // CS0168 on line 9
    }
}

Заметки

Директиву #line можно использовать в автоматизированном, промежуточном шаге в процессе построения. Например, если строки были удалены из первого файла с исходным кодом, но компилятор по-прежнему должен выдавать результат на основе исходной нумерации строк в файле, строки можно удалить и затем смоделировать исходную нумерацию строк с помощью #line.

Директива #line hidden скрывает последовательные строки от отладчика так, что когда разработчик переходит по коду, любые строки между #line hidden и следующей директивой #line (если, конечно, это не другая директива #line hidden) будут пропущены. Эту возможность можно также использовать для того, чтобы ASP.NET различал пользовательский и созданный компьютером код. Несмотря на то, что в основном эта возможность используется ASP.NET, существует вероятность, что она будет использоваться большим числом генераторов источника.

Директива #line hidden не влияет на имена файлов или номера строк при создании сообщений об ошибках. То есть, в случае ошибки в скрытом блоке компилятор сообщить имя текущего файла и номер строки с ошибкой.

Директива #line filename определяет имя файла, которое должно присутствовать в результатах компилятора. По умолчанию используется фактическое имя файла с исходным кодом. Имя файла должно быть заключено в двойные кавычки ("").

В файле исходного кода может присутствовать любое число директив #line.

Пример 1

Следующий пример демонстрирует как отладчик пропускает скрытые строки в коде. При выполнении примера выводятся три строки текста. Однако, если задать точку остановка (как показано в примере) и нажать клавишу F10 для перехода по коду, то можно будет заметить, что отладчик пропускает скрытую строку. Кроме того, обратите внимание, что даже если в скрытой строке установить точку останова, она все равно будет пропущена отладчиком.

// preprocessor_linehidden.cs
using System;
class MainClass 
{
    static void Main() 
    {
        Console.WriteLine("Normal line #1."); // Set break point here.
#line hidden
        Console.WriteLine("Hidden line.");
#line default
        Console.WriteLine("Normal line #2.");
    }
}

См. также

Основные понятия

Руководство по программированию в C#

Ссылки

Директивы препроцессора C#

Другие ресурсы

Справочник по C#