#line (C#-Referenz)
Aktualisiert: November 2007
Mit #line können die Zeilennummer des Compilers und optional der Dateiname, die für Fehler und Warnungen ausgegeben werden, geändert werden. Dieses Beispiel zeigt, wie zwei Warnungen mit zugeordneten Zeilennummern in einem Fehlerbericht angezeigt werden. Durch die #line 200-Direktive wurde die Zeilennummer 200 erzwungen (obwohl die Standardnummer 7 lautet). Aufgrund der Verwendung der #line-Standarddirektive folgt die andere Zeile (Nr. 9) der normalen Zeilenabfolge.
class MainClass
{
static void Main()
{
#line 200
int i; // CS0168 on line 200
#line default
char c; // CS0168 on line 9
}
}
Hinweise
Die #line-Direktive kann während des Buildprozesses in einem automatisierten Zwischenschritt verwendet werden. Wenn z. B. Zeilen aus der ursprünglichen Quellcodedatei entfernt wurden, der Compiler die Ausgabe aber weiterhin basierend auf der ursprünglichen Zeilennummerierung der Datei generieren soll, können Zeilen entfernt und die ursprüngliche Zeilennummerierung dann mit #line simuliert werden.
Durch die #line hidden-Direktive werden die aufeinander folgenden Zeilen vor dem Debugger verborgen, sodass alle Zeilen zwischen einer #line hidden-Direktive und der nächsten #line-Direktive (sofern es sich nicht um eine weitere #line hidden-Direktive handelt) übergangen werden, wenn der Entwickler den Code schrittweise durchgeht. Anhand dieser Option kann ASP.NET auch die Möglichkeit eingeräumt werden, zwischen benutzerdefiniertem und computergeneriertem Code zu unterscheiden. Obwohl es sich bei ASP.NET um den Hauptnutzer dieses Features handelt, ist davon auszugehen, dass es von mehreren Programmen zur Quellcodegenerierung verwendet wird.
Eine #line hidden-Direktive hat keinen Einfluss auf Dateinamen oder Zeilennummern in Fehlerberichten. Wenn ein Fehler also in einem verborgenen Block auftritt, gibt der Compiler den aktuellen Dateinamen und die Zeilennummer des Fehlers an.
Die #line filename-Direktive gibt den Dateiname an, der in der Ausgabe des Compilers angezeigt werden soll. Standardmäßig wird der tatsächliche Name der Quellcodedatei verwendet. Der Dateiname muss in doppelte Anführungszeichen ("") eingeschlossen sein.
Eine Quellcodedatei kann eine beliebige Anzahl von #line-Direktiven enthalten.
Beispiel 1
Im folgenden Beispiel wird veranschaulicht, wie der Debugger die verborgenen Codezeilen ignoriert. Beim Ausführen dieses Beispiels werden drei Textzeilen angezeigt. Wenn Sie jedoch, wie im Beispiel, einen Haltepunkt festlegen und den Code mit F10 schrittweise durchlaufen, werden Sie feststellen, dass die verborgene Zeile vom Debugger ignoriert wird. Die Zeile wird vom Debugger auch ignoriert, wenn Sie an der verborgenen Zeile einen Haltepunkt setzen.
// 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.");
}
}