#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#