C#中默认的(IInterface)接口的目的是什么?

3
如果你有一个名为 - 例如 - IInterface 的接口,在C#中编写以下代码是完全合法的:
var i = default(IInterface);

但它总是返回null

允许这种具有唯一结果的表达式的目的是什么?一个接口也可以由数字或结构类实现,一个默认的null不可用。那么......为什么选择允许在语言中使用default(IInterface)呢?


1
接口是引用类型:结构体、接口和装箱 - Pieter Witvoet
1
在通用代码中非常重要。当需要转换使用Nothing的VB.NET代码时非常方便。或者如果您有一个类型为IntPtr的可选参数,则不能使用IntPtr.Zero。 - Hans Passant
1个回答

8

default(T) 运算符是为泛型类型引入的。

如果 T 是一个类型参数,对于引用类型它将返回null,对于值类型它将返回new T()

一旦该运算符存在,就没有必要将其限制为仅适用于类型参数,因此它适用于所有类型。


我想深入探讨的部分是“没有理由限制”...因为你可以使每个功能更加灵活和广泛,但这会在开发、维护、学习曲线等方面产生成本。 “没有理由限制”是一种基于观点的负面论点,我正在寻找一些正面的论点来允许这样的语法。 - Massimiliano Kraus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接