C# にて副作用は必要だが戻り値が void で困った場合にどうするか?
追記2
落とし穴は Visual Studio 2008 and .NET Framework 3.5 Service Pack 1 Beta で塞がれました.
追記
この話は落とし穴があるので注意.詳しくは最後の追記を.
Unit 型が無くて困るぜな話.
letで代入を伴うのでvoidなメソッドを呼べないといってintに変えてまでどっぷり暗黒面という事で、「その気になればif、for、foreach、whileといった制御構文みんな要らないよね」ではありますが適度に使ってくれたほうが絶対良いですね。
re: LINQでリバーシ(4) そして暗黒面へ 2008/02/07 9:40 菊池 - 菊池 Blog
これについては,
"voidを返すメソッド() is object"でboolを表現できる
素数を求める1行プログラム(C#3.0編) - このブログは証明できない。
ってのを最近見て「へーへーへー」だったのでありますよ.
var q = Enumerable.Range(0, 100) .Select(i => !(Console.WriteLine(i) is object) ? i : i) .ToArray();
という感じで副作用挟み込み.警告鬱陶しいですが.
追記
そういや警告 CS0184 は嫌な予感がするなあと思ったら予想通り嫌なことになっていた.
CS0184 should be a compile error