Условный метод в C#
Условный метод помечают ConditionalAttribute: он должен возвращать
void, а вызовы исчезают из IL, если символ (например DEBUG) не
определён при компиляции.
Компилятор убирает вызовы ещё при сборке, отдельной проверки в программе нет. Тело метода в сборке остаётся, просто без символа его не вызывают.
Объявим отладочный шаг и вызовем его из обычного метода. Символ DEBUG объявлен, поэтому в консоли будут "step" и "done":
#define DEBUG
using System.Diagnostics;
Run();
[Conditional("DEBUG")]
static void LogStep() => Console.WriteLine("step");
static void Run()
{
LogStep();
Console.WriteLine("done");
}
Сделайте отладочный вывод "build", который исчезает без символа DEBUG, и выведите "ready".