C# - где используется класс Debug?
Все зависит от юз-кейсов.
Debug.Assert удобно использовать для того, чтобы поймать какую-то нестандартную ситуацию.
Самый простой пример - если у тебя есть входной параметр, который должен быть не null, то можно конечно сделать так:
public void DoSomething (IFoo foo) { if (foo != null) { ... } else { throw new SomeException ("Foo can't be null"); } }
Это вполне понятное решение.
А можно заменить всю эту конструкцию на Debug.Assert. Тогда в Debug-моде будет брошено исключение и исполнение остановится на этой строке (как если бы там была точка останова с условием), так что у разработчика будет возможность отладить код. При этом в релиз сборке ничего не произойдет и, очевидно, при исполнении кода будет брошено NullReferenceException.
Кроме этого, в Debug есть вывод отладочной ипформации в окно. Что тоже очень удобно. Я например часто использую эту фишку для перенаправки вывода в юнит-тестах. Т.е. делаю свой класс, который выводит ошибки в окошко, подменяют логгер и получается, что я могу видеть все логи во время отладки юнит-тестов. Очень удобно :)