Здравствуйте, amx3000, Вы писали:
A>>>Понял, спасибо. Правда, есть сомнения в целесообразности подобного (именно со стримом) — с точки зрения производительности. Думаю, ненужная работа со пустым стримом может в некоторых случаях занять ощутимое время.
_FR>>Например?
A>Например, запись в цикле в пустой стрим большого количества данных. Есть сомнения, что это будет сравнимо по времени со случаем, когда стрим проверяется на null и никакой записи не производится вообще. Особенно, если при этом записываемые данные вычисляются по ходу записи.
Ты не обратил внимание на первую часть предложения:
…когда надо возвратить стрим и по каким-то причинам не удаётся, следует или бросить исключение или вернуть Stream.Null, но не "null".
Теперь в методе, который чо-то возвращает до должен отдать или рабочий стрим, или сказать, что отдать ничего не можешь. Как по-твоему, по какой причине
File.Open(…) не возвращает null в случае неудачи, а выбрасывает исключение? А я тебе скажу: чтобы избавить вызывающего от принятия решения и ненужной (вызывающему) проверки.
_FR>>за счёт чего получится "ощутмость"?
A>За счет вызовов методов, которые ничего не делают.
Об этом должен думать метод, возвращающий стрим: Что будет делать вызывающая строна с результатом? Приведи пример, когда возврат null по твоему мнению будет лучше, чем бросание исключения или возврата Stream.Null?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>