"default" 通用约束有什么作用?
What does the "default" generic constraint do?
下面的代码可以编译,但是微软的文档似乎根本没有提到这个特定的约束类型。
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 可空引用类型的设计提案中找到。添加它是为了在 struct
约束中消除 class
之间的歧义,这些约束在可空泛型参数 T?
.
的重写或显式实现的方法中
更多详细信息也可以在 Unconstrained type parameter annotations proposal
中找到
To allow annotations for type parameters that are not constrained to
reference types or value types, C#9 allows a new where T : default
constraint.
这些约束和注释在 nullable contexts
中有效
下面的代码可以编译,但是微软的文档似乎根本没有提到这个特定的约束类型。
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 可空引用类型的设计提案中找到。添加它是为了在 struct
约束中消除 class
之间的歧义,这些约束在可空泛型参数 T?
.
更多详细信息也可以在 Unconstrained type parameter annotations proposal
中找到To allow annotations for type parameters that are not constrained to reference types or value types, C#9 allows a new
where T : default
constraint.
这些约束和注释在 nullable contexts
中有效