Вы можете использовать делегатов для решения этой проблемы, хотя я уверен, что проверка логических значений, вероятно, значительно быстрее, чем Console.WriteLine()
.
Добавьте делегата в класс:
public delegate void Output(string message);
Затем при запуске приложения вы можете проверить свой bool и назначить метод для запуска в зависимости от того, хотите ли вы на самом деле писать или нет.
bool logInformation = true;
if(logInformation)
{
ProcessInformation((s) => { Console.WriteLine(s); });
}
else
{
ProcessInformation((s) => { });
}
И, наконец, добавьте делегата в сигнатуру вашего метода для вашего метода обработки.
private void ProcessInformation(Output logger)
{
// doing stuff, time to write
logger("test");
}
Вам нужно будет заменить вызовы Console.WriteLine на logger(), но это позволит вам запускать вещи, не беспокоясь о проверке логического значения каждый раз. Тем не менее, я не знаю, действительно ли это быстрее, чем каждый раз проверять логическое значение, но, вероятно, его проще реализовать и поддерживать.
person
exceptionthrown
schedule
23.04.2016
bool
будет довольно легко по сравнению с вызовомConsole.Writeline
- person cost   schedule 23.04.2016#if DEBUG
. - person Luke Joshua Park   schedule 23.04.2016bool
будет намного быстрее, чем любой доступ кConsole
. Вы действительно профилировали свое приложение, чтобы увидеть, сколько на самом деле стоит сравнениеbool
? Я бы подозревал, что нет, иначе вы бы не удосужились задать этот вопрос. Единственная оптимизация, которую вы можете иметь, - это вообще не использовать весь метод, который выполняетWriteLine
- полностью удалите его, если вы не включите его для целей отладки или отслеживания. - person Ken White   schedule 23.04.2016