Немного вне темы в способе использовать его. Одиночные элементы переоценены, и метод "общего состояния" является столь же эффективным, и главным образом, очень чистым в Python, например:
class Borg:
__shared_state = {}
def __init__(self):
self.__dict__ = self.__shared_state
# and whatever else you want in your class -- that's all!
Теперь каждый раз Вы делаете:
obj = Borg()
это будет иметь ту же информацию, или, будет несколько тем же экземпляром.
Все члены в классе Debug помечены ConditionalAttribute , поэтому сайты вызовов не будут компилироваться в сборку Release.
Вызов метода System.Diagnostics.Debug
присутствует, только если определен символ условной компиляции «DEBUG». По умолчанию символ «DEBUG» определен только для отладочных сборок.
Компиляторы, поддерживающие
ConditionalAttribute
игнорировать вызовы эти методы, если только "DEBUG" не определяется как условная компиляция символ.
Поскольку все методы отладки имеют атрибут [Conditional ("DEBUG")], если вы переключитесь с отладки на выпуск, вам не придется беспокоиться об этом, поскольку вызовы этих методы будут удалены (вместе с другими оптимизациями сборки Release).
Информация об отладке видна только при работе в режиме отладки . В режиме выпуска никакие операторы отладки не будут отображаться (вы можете использовать Trace вместо Debug , если хотите, чтобы эти операторы были видны в режиме выпуска).
Почти все члены Debug помечены ConditionalAttribute. Такие компиляторы, как C #, будут пропускать вызовы этих методов во время сборки Release, так что вы в безопасности.
Информация о режиме здесь: http://msdn.microsoft.com/en-us/library/system.diagnostics.debug.aspx
Providing you compile without the /d:DEBUG
option or #define DEBUG
, your WriteLine calls will not physically present in your release code; there is no way for any third party to recover any information from these calls, as they literally not there in the release version.
More details here: Debug Class (System.Diagnostics) on MSDN