Обновлено для компилятора Roslyn:
Debug.WriteLine
зависит от того, определен ли символ компилятора DEBUG
и включен ли «Оптимизация». Обычно a Конфигурация выпуска не имеет определенного символа компилятора DEBUG
, а для оптимизаций установлено значение True
.
Код:
Console.WriteLine("Hello World!");
Debug.WriteLine("Hello World!");
Console.WriteLine("Hello World!");
Debug
символ не определен, оптимизация: False
IL_0000: ldstr "Hello World!"
IL_0005: call void [mscorlib]System.Console::WriteLine(string)
IL_000b: nop
IL_000a: ldstr "Hello World!"
IL_000f: call void [mscorlib]System.Console::WriteLine(string)
Но при включенной оптимизации NOP
удаляется.
Debug
символ не определен, оптимизация: True
IL_0000: ldstr "Hello World!"
IL_0005: call void [mscorlib]System.Console::WriteLine(string)
IL_000a: ldstr "Hello World!"
IL_000f: call void [mscorlib]System.Console::WriteLine(string)
Debug
символ определен, оптимизация: False
:
IL_0001: ldstr "Hello World!"
IL_0006: call void [mscorlib]System.Console::WriteLine(string)
IL_000b: nop
IL_000c: ldstr "Hello World!"
IL_0011: call void [System]System.Diagnostics.Debug::WriteLine(string)
IL_0016: nop
IL_0017: ldstr "Hello World!"
IL_001c: call void [mscorlib]System.Console::WriteLine(string)