“默认”通用约束有什么作用?

c#

c#-9.0

下面的代码可以编译,但似乎微软的文档根本没有提到这个特定的约束类型。

class TestGenericsBase<T1>
{
    public virtual void Method1<T>(T arg)
    {
    }
}

class TestGenerics : TestGenericsBase<object>
{
    public override void Method1<T>(T arg)
        where T : default // what does this do?
    {
    }
}

知道它有什么作用吗?到目前为止,我唯一的线索是它只适用于方法。

回答

default约束可以在 C#9 设计提案中找到,用于可空引用类型。添加它是为了消除可空泛型参数的覆盖或显式实现方法中的classinstruct约束 之间的歧义T?

更多细节也可以在无约束类型参数注释提案中找到

为了允许对不受引用类型或值类型约束的类型参数进行注释,C#9 允许使用新where T : default
约束。

这些约束和注释在可为空的上下文中工作


以上是“默认”通用约束有什么作用?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>