私はC#を使用しています。Predicate Delegateをインラインでどのように宣言しますか?
私はいくつかのフィールドを持つオブジェクトを持っているので、実際に何か問題はありません。 私はこれらのオブジェクトの総称リストを持っています。
List<MyObject> myObjects = new List<MyObject>();
myObjects.Add(myObject1);
myObjects.Add(myObject2);
myObjects.Add(myObject3);
私はいくつかの基準に基づいてリストからオブジェクトを削除したいと思います。 たとえば、myObject.X >= 10.
これを行うには、RemoveAll(Predicate<T> match)
メソッドを使用します。
私はRemoveAllに渡すことができるデリゲートを定義できますが、匿名デリゲートでこのインラインを定義する方法を知りたいと思います。一度の場所でのみ使用されるデリゲート関数を作成するのではなく、
明示的なデリゲート
myObjects.RemoveAll(delegate (MyObject m) { return m.X >= 10; });
ラムダ
myObjects.RemoveAll(m => m.X >= 10);
追加::
それはラムダを持っているのに、なぜVB匿名デリゲートをしたいでしょうか? はい、次のバージョンは値(= 'Sub's)を返さない複数行のlambdaとlambdaを持ちます。 –
あなたが今述べた理由のために、複数行のステートメントと値を返さない関数があります。それは次のバージョンになるはずですが、C#は2005年以来それを持っていました。 –