繁体   English   中英

C#列表通用扩展方法与非通用扩展方法

[英]C# List Generic Extension Method vs Non-Generic

这是一个简单的问题(我希望),像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;
        });

为什么使用一个(通用或非通用)?

它们是相同的方法(文档在这里 )。 方法名称后面的类型参数部分(在本例中为<int> )是可选的,当编译器能够自动且明确地从上下文推断类型时。 在这种情况下,该方法应用于实现接口IEnumerable<int>的对象(即List<int>类型的对象numbers ),编译器可以从中安全地推断出类型参数是int

另请注意, Where<T>实际上是System.Linq.Enumerable类的扩展方法 ,可以应用于实现IEnumerable<T>的任何类的对象,例如List<T>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM