#line (Справочник по C#)
#line позволяет изменить номер строки компилятора и (необязательно) вывод имени файла для ошибок и предупреждений. В этом примере показано как сообщить о двух предупреждениям, связанных с номерами строк. Директива #line 200 принудительно задает для номера строки значение 200 (хотя по умолчанию это строка № 7), до появления следующей директивы #line имя файла во всех сообщениях будет указываться как "Special". Директива #line восстанавливает нумерацию строк по умолчанию, в которой учитываются строки, перенумерованные предыдущей директивой.
class MainClass
{
static void Main()
{
#line 200 "Special"
int i; // CS0168 on line 200
int j; // CS0168 on line 201
#line default
char c; // CS0168 on line 9
float f; // CS0168 on line 10
#line hidden // numbering not affected
string s;
double d; // CS0168 on line 13
}
}
Заметки
Директиву #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#