为什么它是IEnumerable.Empty <T>()而不是IEnumerable <T> .Empty()?

Gui*_*Sim 1 c# generics methods static types

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

Enumerable.Empty<T>()
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参见此处

为什么Microsoft选择此选项而不是在泛型类型上使用静态方法(与非泛型类型的通用静态方法相反)?

这个方法可以像这样使用:

Enumerable<T>.Empty()
Run Code Online (Sandbox Code Playgroud)

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

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

编辑:错字

SLa*_*aks 13

IEnumerable<T>是一个界面.
接口不能包含静态成员.

静态方法实际上是Enumerable类型,它是一个非泛型static类.
因此,没有Enumerable<T>可以包含该方法的泛型类.

应避免使用泛型类型的静态成员.
扩展方法不能放在泛型类型中.
这就是静态Enumerable类不通用的原因.