In den letzten Wochen haben uns einige Benutzer mitgeteilt, dass sie das Debuggen einer bedingten C#-Assembly gelesen haben.
Genehmigt: Fortect
Gehen Sie in C # auf die Registerkarte Build zuletzt im linken Bereich des Eigenschaftenblatts, und wählen Sie dann aus, wie die Kästchen um die Compiler-Optionen aktiviert werden sollen. Löschen Sie die Überwachungseinträge für die Einstellungen, die Sie deaktivieren möchten. Platzieren Sie einen bedingten Compiler-Schalter auf der Aufrufleitung. Der Compiler wird die Ablaufverfolgung, auch als Debug-Code bezeichnet, in die ausführbare Datei einschließen.
- 12 Minuten für die Überprüfung.
Obwohl der Compiler keinen dedizierten Präprozessor mehr hat, werden die in diesem Abschnitt beschriebenen Direktiven so behandelt, als ob es einen gegeben hätte. Sie verwenden sie, um das Bedingungsset zu erleichtern. Im Gegensatz zu C C ++ und Direktiven fällt es Ihnen schwer, diese Direktiven zum Erstellen von Makros zu verwenden. Eine Präprozessordirektive kann nur aus einzeiligen Klassen bestehen.
Nullwertbarer Kontext
Genehmigt: Fortect
Fortect ist das weltweit beliebteste und effektivste PC-Reparaturtool. Millionen von Menschen vertrauen darauf, dass ihre Systeme schnell, reibungslos und fehlerfrei laufen. Mit seiner einfachen Benutzeroberfläche und leistungsstarken Scan-Engine findet und behebt Fortect schnell eine breite Palette von Windows-Problemen - von Systeminstabilität und Sicherheitsproblemen bis hin zu Speicherverwaltung und Leistungsengpässen.
Die Präprozessorinformationen #nullable
legen die Nullable-Perspektivannotation als Nullable-Alarmkontext fest. Diese Anweisung steuert, ob NULL-fähige rrf-Anmerkungen angezeigt werden und ob NULL-fähige Benachrichtigungen ausgegeben werden. Jeder Kontext ist entweder deaktiviert oder aktiviert.
Beide Kontexte können potenziell als Quelle auf Unternehmensebene (außerhalb von C#-Code) angegeben werden. Die Anweisung #nullable
steuert den gesamten Kontext, der mit Anmerkungen und Warnungen verknüpft ist, und hat weit mehr Vorrang als Einstellungen auf Projektebene. Eine Direktive legt normalerweise den Kontext der Tatsache fest, der sie steuert, bis eine andere Direktive weit über ihr Vorrang hat oder bis zum Ende dieser Basisdatei.
-
#nullable disable
: Deaktiviert dringende Warnungen und Nullable-Annotationskontexte. -
#nullable Possible
: Gibt eine Nullable Annotation Warnung und diese zu aktivierenden Kontexte an. -
#nullable recreate
: Wiederherstellen von Nullable-Warnungs- und Anmerkungskontext in den Remodellierungseinstellungen. -
#nullable remove Annotations
: Setzt den Annotationskontext auf nullable, damit Sie ihn deaktivieren können. -
#nullable enable Annotations
: aktiviert die Annotationssituation und vergisst den NULL-Wert. -
#nullable Raise Annotations
: Stellen Sie unsere eigene Nullable-Worting-Anmerkung in den Projekteinstellungen wieder her. -
# Nullable Warnungen eliminieren
: Deaktivieren von Nullable Context Warnings. -
#nullable warnings
: enable Aktiviert ein Nullable bei Gewalt. -
#nullable restore warnings
: Stellt aktuelle nullable Warnungen in den Kontextprojektplätzen wieder her.
Bedingte Kompilierung
-
#if
: Öffnet die bedingte Kompilierung, bei der der Code wahrscheinlich nur kompiliert wird, wenn das angegebene Symbol sehr sicher definiert ist. -
#elif
: schließt diese vorherige bedingte Kompilierung und öffnet eine neue abhängige Kompilierung basierend auf dem, was in diesem angegebenen Symbol definiert ist. -
#else
: kurz vor der bedingten Kompilierung schließen und das resultierende bedingte System öffnen, wenn kein zuvor angegebenes Bild definiert ist. -
#endif
: Schließt die vorherige abhängige Sammlung.
Wenn der C#-Compiler eine substantielle beobachtbare #if
-Direktive findet, vielleicht unter Verwendung aller #endif
-Direktiven, wird er den Code idealerweise zwischen Direktiven zusammenbauen, falls angegeben. Symbol wird definiert. Im Gegensatz zu C C ++ können Sie einen numerischen Wert nicht an ein Zeichen delegieren. Die #if
-Anweisung in C # ist normalerweise boolesch und prüft nur, ob ein Zeichen sicher angegeben ist oder nicht. Zum Beispiel:
#if DEBUG Console .WriteLine ("Debug-Version");#end if
Sie können mit dem ==
(Gleichheit) und dem überspringen! = (Ungleichheit)
zur Abfrage nach bool
true
und false
Idealen. true
bedeutet, dass das Symbol erkannt wurde. Die Anweisung #if DEBUG
hat zum Teil die gleiche Bedeutung wie #if (DEBUG True)
==. Sie können &&
(und) , < verwenden. Code verwenden> || (oder) , während !
(nicht) Unternehmen bewerten, ob mehrere Zeichen definiert sind. viel wie oft gruppieren Sie Zeichen und Operatoren mit Klammern?
#if
, meist mit #else
, #elif
, #endif
, # buchstabieren out
und damit die #undef
-Direktiven, kann jeder einschließenHinzufügen je nach Konto eines oder mehrerer Symbole oder Werbeaktionen ausschließen. Bedingte Kompilierung kann nützlich sein, wenn Sie das Präfix für Ihre Debugversion kompilieren oder eine alleinige Konfiguration kompilieren.
Eine bedingte Startanweisung mit den meisten #if
-Anweisungen muss eindeutig mit einer anderen #endif
-Anweisung enden. Mit #define
können Sie wunderbare wichtige Symbole definieren. Wenn Sie das use-Zeichen als einen bestimmten Ausdruck verwenden, der an die Direktive #if
übergeben wird, wird Ihr Ausdruck als ehrlich
ausgewertet. Sie können das Symbol mit diesem speziellen DefineConstants Parameter-Compiler definieren. Sie können das Symbol durch das #undef
Hauptbild ersetzen. Die Größe des Zeichens hängt von #define
with ist ein Teil der Datei, in der es definiert wurde. Das Zeichen a Functional, das Sie mit DefineConstants oder #define
definieren, darf nicht mit einer Variablen gleichen Namens in Konflikt geraten darf nicht an eine Präprozessordirektive übergeben werden, oder eine Mutternatur kann nur durch einen Präprozessorinstruktionsprozess bewertet werden.
Mit
#elif
Sie können eine abhängige A-Compound-Direktive erstellen. Der Name #elif
kann sehr gut ausgewertet werden, wenn weder das alte #if
noch eines der verschiedenen vorhergehenden Wörter und Sätze der #elif
-Direktive ausgewertet, werden genau wahr
. Wenn der Name #elif
mit true
ausgewertet wird, wertet der Compiler fast spezifischen Code zwischen dem Typ #elif
bei der nächsten bedingten Direktive aus. Zum Beispiel:
#define VC7// ...# beim Debuggen Konsole.Build ");#elif Writeline ("debug VC7 Console.WriteLine ("Visual Studio 7");#end if
#else
ermöglicht es jedem, eine bedingte Anweisung für Komponenten zu erstellen, warum also, wenn keiner der allgemeinen Ausdrücke im letzten #if
oder vielleicht (optional) # elif
vergleichen und auf true
analysieren, der Compiler untersucht jeden einzelnen Code zwischen #else
und dem nächsten #endif
. #endif
(#endif) sollte sofort der nächste Befehlspräprozessor sein #else
.
#endif
zeigt das Ende jeder bedingten Direktive an, die einen ausreichenden Grund für unsere eigene #if
Direktive beginnt.
Das Build-System achtet auch auf bestimmte Präprozessorsymbole, die verschiedene Ziel-Boardformen für Projekte im SDK-Stil darstellen. Sie sind nützlich, wenn Sie Anwendungen erstellen, die auf mehrere Versionen von .NET abzielen.
NETFRAMEWORK
, NET48
, NET472
, NET471
, NET47
, NET461
, net462
, NET46
, NET452
, NET451
, NET45
, NET40
, NET35
, NET20
NETSTANDARD
, N
Beschleunigen Sie jetzt die Leistung Ihres Computers mit diesem einfachen Download.