7

List<T>これは簡単な質問です (希望します)。 コレクション クラスには、 やなどのメソッドを持つジェネリック メソッドと非ジェネリック メソッドがWhereありWhere<T>ます。

例:

        List<int> numbers = new List<int>()
        {
            1, 2, 3, 4, 5, 6, 7, 8, 9, 10
        };

        IEnumerable<int> evens = numbers.Where((x) =>
        {
            return x % 2 == 0;
        });

        IEnumerable<int> evens2 = numbers.Where<int>((x) =>
        {
            return x % 2 == 0;
        });

どちらか一方 (ジェネリックまたは非ジェネリック) を使用する理由は?

4

1 に答える 1

11

それらは同じ方法です(ドキュメントはこちら)。メソッド名の後の型パラメーター部分 (つまり<int>、この場合) は、コンパイラーがコンテキストから自動的かつ明確に型を推測できる場合はオプションです。この場合、メソッドは、インターフェイスを実装するオブジェクトIEnumerable<int>(つまり、numberstypeのオブジェクトList<int>) に適用され、コンパイラはそこから型パラメーターが であると安全に推測できますint

また、これWhere<T>は実際にはクラスの拡張メソッドであり、などをSystem.Linq.Enumerable実装する任意のクラスのオブジェクトに適用できることに注意してください。IEnumerable<T>List<T>

于 2013-03-01T07:41:56.650 に答える