【发布时间】:2021-10-01 21:41:55
【问题描述】:
我正在查看通用类型约束的 MSDN 文档,发现以下段落。
您使用默认约束来指定您的派生类覆盖没有派生类中的约束或显式接口实现的方法。它仅对覆盖基本方法或显式接口实现的方法有效:
public class D : B
{
// Without the "default" constraint, the compiler tries to override the first method in B
public override void M<T>(T? item) where T : default { }
}
我无法理解派生类在没有约束的情况下覆盖方法的部分。请用一个详细的例子来解释这个问题,在“M”方法中需要为 T 传递值?
【问题讨论】:
-
如果您在引用的同一文档中向上滚动几段,您将看到添加默认约束的动机:它可以让您解决
T?之间的歧义,意思是Nullable<T>和T?表示允许null值的引用对象。