C#中的默认目的(IInterface)

Mas*_*aus 3 c# default interface

如果你有一个名为 - 例如 - 的接口IInterface,在C#中编写这样的代码是完全合法的:

var i = default(IInterface);
Run Code Online (Sandbox Code Playgroud)

但它总是回归null.

允许这种表达具有独特结果的目的是什么?接口也可以通过数字或结构类实现,因此默认null值不可用.那么,除了选择允许default(IInterface)语言之外的原因是什么?

SLa*_*aks 8

default(T)运营商引入了泛型类型.

如果T是类型参数,它将返回null引用类型或new T()值类型.

一旦运算符存在,就没有理由将其限制为仅使用类型参数,因此它适用于所有类型.