Как стать автором
Обновить

Комментарии 5

Чтобы без проблем вызывать IDisposable.Dispose() несколько раз, необходимо поле _disposed

Это требование необходимо выполнять только в случае, если вы работаете напрямую с неуправляемым ресурсами и только если их повторный Dispose вызовет плохое поведение. Во всех остальных случаях (99%), когда ваш IDisposable класс использует IDisposable поля, это требование можно легко игнорировать.

К слову, чтобы работать с неуправляемыми ресурсами, можно просто использовать SafeHandle (написать свою реализацию для конкретного ресурса) и забыть про паттерн Dispose.


Ну а поле _disposed фактически нужно, чтобы бросать ObjectDisposedException.

Многие советы из категории "вредных" либо очевидных (что ToList() делать для Count() не нужно). Главное правило в оптимизациях: померить, найти узкое место, исправить, и повторить нужное количество раз. Обычно это доступ к данным и внешним сервисам...

Выдумывание нового подхода к реализации IDisposable напоминает старый анекдот о стандартах... лучше делать так как завещал дедушка Рихтер, тогда не надо будет над каждой реализацией ломать мозг и всем будет проще читать и понимать код.

Полезно, но временами хромает оригинал, временами перевод:
Увеличивайте вместимость списка, когда это возможно

1. Не увеличивайте, а «указывайте при создании», чтобы он не увеличивался в процеcсе.
2. Пропущено предложение перед примером кода.
3. Сам пример кода должен быть таким:
var resultList = new List<...>(otherList.Count);
— сразу в конструкторе задаем колво элементов чтобы выделить нужный объем внутреннего массива.

Примеры кода в «Интернирование и кэширование строк» и «Не создавайте объекты повторно» одинаковые, да и текст вокруг них похож — в оригинале тоже так но так и должно быть, или я что-то упустил?

Капитанство перемежается с устаревшей информацией, при этом чего-то более-менее свежего нет в принципе.

Добротная антиреклама учебного центра. Впрочем, как всегда.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.