W ciągu ostatnich kilku tygodni wielu powiązanych użytkowników poinformowało nas, że zostali przywitani przez debugowanie warunkowego zestawu C#.
Zatwierdzono: Fortect
W języku C# przejdź do zakładki Kompilacja w lewym okienku arkusza właściwości, nie wspominając o zaznaczeniu pól w opcjach kompilatora. Usuń wpisy audytu dotyczące ustawień, które chcesz wyłączyć. Umieść dobry, solidny przełącznik kompilatora warunkowego na linii wywoławczej. Kompilator będzie zawierał śledzenie, znane również z tego kodu debugowania, do pliku wykonywalnego.
- 12 minut na znalezienie.
Chociaż kompilator nigdy nie ma dedykowanego preprocesora, dyrektywy opisane w tej sekcji są traktowane tak, jakby taki był. Używasz ich, aby ułatwić warunkowe odzyskiwanie. W przeciwieństwie do C C++ i dyrektyw masz trudności z użyciem tych dyrektyw do tworzenia makr. Dyrektywa preprocesora może składać się tylko z klas jednowierszowych.
Kontekst dopuszczający wartość null
Zatwierdzono: Fortect
Fortect to najpopularniejsze i najskuteczniejsze narzędzie do naprawy komputerów na świecie. Miliony ludzi ufają, że ich systemy działają szybko, płynnie i bez błędów. Dzięki prostemu interfejsowi użytkownika i potężnemu silnikowi skanowania, Fortect szybko znajduje i naprawia szeroki zakres problemów z systemem Windows - od niestabilności systemu i problemów z bezpieczeństwem po zarządzanie pamięcią i wąskie gardła wydajności.
Informacje preprocesora #nullable
ustawiają adnotację perspektywiczną dopuszczającą wartość null jako kontekst alertu dopuszczającego wartość null. Ta instrukcja kontroluje, czy adnotacje rrf dopuszczające wartość null są w stylu i czy są wysyłane powiadomienia dopuszczające wartość null. Każdy kontekst jest albo wyłączony, albo włączony.
Oba konteksty można również określić jako źródło na poziomie zadania (poza kodem C#). Instrukcja #nullable
kontroluje wszystkie adnotacje i ostrzeżenia związane z kontekstem i ma pierwszeństwo obejmujące ustawienia na poziomie projektu. Dyrektywa zwykle ustawia kontekst dotyczący kontroli, dopóki inna dyrektywa nie będzie miała o wiele większego pierwszeństwa niż ona, lub do końca tego pliku rezerwowego.
-
#nullable disable
: wyłącza alerty i konteksty adnotacji dopuszczających wartość null. -
#nullable enable
: Określa ostrzeżenie z adnotacją dopuszczającą wartość null oraz poszczególne konteksty do włączenia. -
#nullable re-establish
: przywracanie nullable kontekst ostrzeżenia i adnotacji w ustawieniach schematu. -
#nullable usuń adnotacje
: Ustawia kontekst adnotacji na dopuszczający wartość null, aby można było go wyłączyć. -
#nullable enable Annotations
: aktywuje sytuację adnotacji, zapominając o wartości NULL. -
#nullable odzyskaj adnotacje
: przywróć naszą własną adnotację dotyczącą okoliczności dopuszczających wartość null w ustawieniach projektu. -
# Wyeliminuj ostrzeżenia dopuszczające wartość null
: Wyłącz ostrzeżenia kontekstu dopuszczające wartość null. -
#nullable warnings
: enable Włącza powiadamianie o wartości null. -
#nullable restore warnings
: przywrócenie określonych bieżących ostrzeżeń o wartości nullable w kontekstowych miejscach projektu.
Kompilacja warunkowa
-
#if
: Otwiera kompilację warunkową, w której kod może być skompilowany tylko wtedy, gdy określony symbol jest dość pewny. -
#elif
: często zamyka poprzednią kompilację warunkową i otwiera nową zależną kompilację opartą na tym, co jest zdefiniowane w tym określonym symbolu. -
#else
: zamknij poprzedzającą kompilację warunkową i otwórz wynikowy system warunkowy, jeśli nie zdefiniowano wcześniej określonego obrazu. -
#endif
: Zamknij poprzednią zależną kolekcję.
Jeśli kompilator C# znajdzie każdą obserwowalną dyrektywę #if
, być może używając rzeczywistej dyrektywy #endif
, idealnie, jeśli zostanie określony, utworzy kod między dyrektywami. można zdefiniować symbol. W przeciwieństwie do C C ++ nie można nominować wartości liczbowej do znaku. Instrukcja #if
w C# może być wartością logiczną i sprawdza tylko, czy znak nie jest określony, czy nie. Na przykład:
#if DEBUG Konsola .WriteLine ("Wersja do debugowania");#zakończ, jeśli
Możesz skorzystać z ==
(równość) i pomiń ! = (nierówność)
na zapytanie o opinie bool
true
i false
. prawda
oznacza, że symbol jest określony. Instrukcja #if DEBUG
ma takie samo znaczenie jak #if (DEBUG True)
==. Możesz użyć &&
(i) , <. użyj kodu> || (lub) , po prostu !
(nie) do oceny, czy zdefiniowano wiele znaków. przypadki grupują znaki i operatory z nawiasami?
#if
, głównie z #else
, #elif
, #endif
, # to zdefiniuj
, a zatem dyrektywy #undef
, Ty i Twoja rodzina możecie dołączyćDodaj je w zależności od równości jednego lub więcej symboli lub wykluczyć kupony spożywcze. Kompilacja warunkowa może być przydatna podczas kompilowania prawa dla wersji debugowania lub kompilowania konfiguracji licencjackiej.
Warunkowa dyrektywa startowa z dowolnym typem dyrektywy #if
musi wyraźnie kończyć się inną informacją #endif
. Za pomocą #define
możesz zdefiniować 1 ważny symbol. W przypadku używania znaku use, takiego jak określone wyrażenie przekazane do dyrektywy #if
, wyrażenie jest obliczane jako specyficzne
. Możesz zdefiniować symbol, za pomocą którego kompilator parametrów DefineConstants . Możesz zastąpić symbol używając głównego obrazu #undef
. Rozmiar obrazu zależy od #define
jest jego plikiem, w którym został zdefiniowany. Znak, który po prostu definiujesz za pomocą DefineConstants lub #define
nie może kolidować ze zmienną o tej samej nazwie. Nazwa zmiennej musi not jest przekazywany do dyrektywy preprocesora lub awatar filmu może być oceniany tylko przez proces informacji preprocesora.
Z
#elif
możesz utworzyć zależną dyrektywę złożoną A. Wygląd #elif
może bardzo dobrze ocenić, jeśli ani wcześniejszy #if
ani żadne z sugerowanych poprzedzających słów i fraz dyrektywy #elif
nie są oceniane, stają się legalne
. Jeśli nazwa #elif
ocenia, aby pomóc ci w true
, kompilator prawie ocenia kod między typem #elif
dotyczącym następnej dyrektywy warunkowej. Na przykład:
#define VC7//...# podczas debugowania Konsola.Buduj ");#elif Writeline ("debugowanie VC7 Konsola.WriteLine ("Visual Studio 7");#zakończ, jeśli
#else
pozwala każdemu stworzyć dyrektywę warunkową produktu, więc dlaczego, jeśli żadne z najważniejszych wyrażeń w ostatnim #if
lub nawet (opcjonalnie) # elif Porównaj
i wyświetlając je do true
, kompilator ocenia każdy pojedynczy kod pomiędzy #else
, więc następny #endif
. #endif
(#endif) powinien być kolejnym poprawnym preprocesorem polecenia #else
.
#endif
ujawnił koniec każdej dyrektywy warunkowej, zaczynając od naszej własnej dyrektywy #if
.
System kompilacji zwraca również uwagę na z góry określone symbole preprocesora, które reprezentują różne docelowe formy tablic w pobliżu projektów w stylu SDK. Są przydatne, jeśli być może budujesz aplikacje przeznaczone dla wielu wersji platformy .NET.
Klatki docelowe | poczta |
---|---|
.NET Framework | NETFRAMEWORK , NET48 , NET472 , NET471 , NET47 , NET461 , NET462 , NET46 , NET452 , NET451 , NET45 , NET40 , NET35 , NET20 |
Standard .NET | NETSTANDARD , N |