gpt4 book ai didi

c# - 为什么是 IEnumerable.Empty() 而不是 IEnumerable.Empty()?

转载 作者:太空宇宙 更新时间:2023-11-03 17:12:49 26 4
gpt4 key购买 nike

如果要创建一个空的T类型的IEnumerable,可以使用静态泛型方法创建

Enumerable.Empty<T>()

参见 here了解更多信息。

为什么 Microsoft 选择此选项而不是对泛型类型使用静态方法(而不是对非泛型类型使用泛型静态方法)?

这个方法可以这样使用:

Enumerable<T>.Empty()

然后会返回一个空的 IEnumerable<T> .

在我看来,第二个选项更有意义,因为我想要创建的是通用的 IEnumerable<T> ,不是非通用的 IEnumerable .

编辑:打字错误

最佳答案

IEnumerable<T>是一个接口(interface)。
接口(interface)不能包含静态成员。

静态方法其实在 Enumerable 类型,它是一个非泛型 static类。
因此,没有 Enumerable<T>可以包含该方法的通用类。

Static members on generic types should be avoided .
扩展方法不能放在泛型类型中。
这就是为什么静态 Enumerable类不是通用的。

关于c# - 为什么是 IEnumerable.Empty<T>() 而不是 IEnumerable<T>.Empty()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4217335/

26 4 0