[解決済み】なぜPredicate<T>ではなく、Func<T,bool>なのか?
2022-04-10 21:07:18
質問
これは単なる好奇心で、誰か良い答えを持っていないかと思ったのです。
.NET Frameworkのクラス・ライブラリには、例えば次の2つのメソッドがあります。
public static IQueryable<TSource> Where<TSource>(
this IQueryable<TSource> source,
Expression<Func<TSource, bool>> predicate
)
public static IEnumerable<TSource> Where<TSource>(
this IEnumerable<TSource> source,
Func<TSource, bool> predicate
)
なぜ、彼らは
Func<TSource, bool>
ではなく
Predicate<TSource>
? のようです。
Predicate<TSource>
が使用されるだけです。
List<T>
と
Array<T>
一方
Func<TSource, bool>
は、ほとんどすべての
Queryable
と
Enumerable
メソッドと拡張メソッド...どうしたんだ?
解決方法は?
一方
Predicate
が導入されたのと同時に
List<T>
と
Array<T>
が、.net 2.0では、異なる
Func
と
Action
のバリアントは .net 3.5 から来ています。
そのため、これらの
Func
述語は、主にLINQ演算子の一貫性のために使われます。.net 3.5の時点では、LINQの演算子で
Func<T>
と
Action<T>
その
ガイドラインでは
:
新しい LINQ タイプを使用する
Func<>
とExpression<>
の代わりに、カスタム デリゲートと述語
関連
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み】WebResource.axdとは何ですか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] EqualsメソッドがオーバーライドされたときにGetHashCodeをオーバーライドすることが重要な理由は何ですか?
-
[解決済み] C#でHashtableよりDictionaryが好まれる理由とは?
-
[解決済み] 戻り値のないFuncデリゲート
-
[解決済み】なぜFunc<T>ではなくExpression<Func<T>を使うのですか?
-
[解決済み】C#の述語デリゲート
-
[解決済み] デレゲート 述語 vs. アクション vs. 関数
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】ここで「要求URIに一致するHTTPリソースが見つかりませんでした」となるのはなぜですか?
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み] [Solved] アセンブリ System.Web.Extensions dll はどこにありますか?
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み】ファイルやアセンブリ、またはその依存関係の1つをロードできませんでした。
-
[解決済み】Nullableオブジェクトは値を持たなければならない?