7

这是一个简单的问题(我希望如此),集合类中有泛型和非泛型方法,List<T>例如WhereWhere<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 回答