LinqKitはSystem.Collections.Generic.IEnumerable
と衝突するIEnumerable
の拡張メソッドForEach
を持っています。C#曖昧な拡張方法
Error 4 The call is ambiguous between the following methods or properties:
'LinqKit.Extensions.ForEach<Domain>(System.Collections.Generic.IEnumerable<Domain>, System.Action<Domain>)'
and
'System.Linq.EnumerableExtensionMethods.ForEach<Domain>(System.Collections.Generic.IEnumerable<Domain>, System.Action<Domain>)'
どうすればこのエラーを取り除くことができますか?
Eric Lippertは、なぜForEach拡張メソッドがベストアイデアではないのか、いくつかの素晴らしい点を持っています。読む価値があります:http://blogs.msdn.com/b/ericlippert/archive /2009/05/18/foreach-vs-foreach.aspx –
「System.Linq.EnumerableExtensionMethods」はどのライブラリから来たのですか? – StriplingWarrior
@ReedCopsey Lippertの推論は、偽であり、関数型プログラミングがC#にどのようにして組み込まれているかを反映していません(例えば、maplの代わりに 'select'、' foldl'の代わりに 'aggregate'、全くfoldr'がありません...)。対照的に、Scalaは、コレクションに対して繰り返すfor文を持っていても 'foreach'メソッドを持っています...実際に' for'ループは 'foreach'(他のものの中でも)の呼び出しに展開されます。 Scalaは命令的なコーディングスタイルを可能にしますが、さまざまな方法で、プログラマーはより多くの経験を積むように機能スタイルに移行することを奨励します。 –