проще - вы можете пометить свои функции отладки тегом метаданных [Условно]:
#define DEBUG1
...
public static void PrintText1(string txt) {
Console.Write("This is PrintText2\n");
}
[Conditional("DEBUG1")]
public static void PrintText2(string txt) {
Console.Write("This is PrintText2\n");
}
[STAThread]
static void Main(string[] args) {
PrintText1("This is the unconditional method");
PrintText2("This function will be called only if 'DEBUG1' is defined");
}
попробуй!
Кроме того, я заметил, что #define
существует только в контексте файла, который он определил, например, вызов PrintText2 из другого файла, где отладка не определена, не будет выполняться. Это также работает наоборот:
[Conditional("DEBUG1")]
public static void ConditionedPrint(string txt) {
Console.Write("This is PrintText2\n");
}
public static void UnconditionedPrint(string txt) {
ConditionedFunc(txt);
}
UnconditionedFunc выведет «This PrintText2 \ n», если (если и только если) #define DEBUG1 был определен в этом файле независимо от других файлов.
Существует также System.Diagnostics.Debug, хотя я не уверен, что он делает.