Здравствуйте, amx3000, Вы писали:
A>Здравствуйте, _FRED_, Вы писали:
A>>>Понял, спасибо. Правда, есть сомнения в целесообразности подобного (именно со стримом) — с точки зрения производительности. Думаю, ненужная работа со пустым стримом может в некоторых случаях занять ощутимое время.
_FR>>за счёт чего получится "ощутмость"?
A>За счет вызовов методов, которые ничего не делают. Понятно, что вызов метода это копеечные накладные расходы в общем случае. Но на фоне нулевых затрат времени и ресурсов на работу самого метода расходы на вызов этого метода все же не нулевые, особенно если метод виртуальный. А то, что мало, но не равно нулю, при "умелом" использовании вполне реально многократно увеличить до статистически значимых величин.
A>Это я не в плане поспорить, что эти копеечные затраты важны, и надо за них биться насмерть любыми способами, а в целях объяснения, за счет чего может получиться "ощутимость". То, что в большинстве случаев про это можно не думать, не означает, что про это думать не следует вообще. Иногда это может быть критично. Иногда.
Мне кажется, метод, возвращающий этот самый Stream.Null, не должен заботиться о производительности метода, который его вызывает — не его это дело. "Зовущий" метод сам может проверить результат на Stream.Null и не делать "ощутимые" записи, сэкономив время.
Цимес Stream.Null'а в таком случае в том, что такая проверка становится опциональной, и без нее не упадет — хотите, экономьте время, пишите доп.логику, устраивает и так — не проверяйте, stream.null такой же поток, как и все остальные; важно то, что в любом случае усложнение кода не навязывается и в любом случае ничего не свалится.