なーるなんだけど
以下のようなソースがある。
bool flg = true; List<string> list = new List<string>() { "abc", "bcd" }; //これはOK string result = list.Find(flg ? new Predicate<string>(delegate(string str) { return str.Contains("a"); }) : new Predicate<string>(delegate(string str) { return str.Contains("b"); })); //これはコンパイルエラーになる string result2 = list.Find(new Predicate<string>(flg ? delegate(string str) { return str.Contains("a"); } : delegate(string str) { return str.Contains("b"); }));
「'匿名メソッド' と '匿名メソッド'' の間に暗黙的な変換がないため、条件式の型がわかりません。」って怒られてしまって、
なんでだろーって思ってた(2か月くらい前…)。
で、ググってみるとわんくまのR・田中一郎さんのブログで同じことが扱われたのを発見した。
http://blogs.wankuma.com/rti/archive/2008/05/23/139053.aspx
理由は理解できるんだけど、エラーになるほうで記述できたほうがいいなぁと思った。