如果这会影响答案,我正在使用C#10和VS2022.
我试图编写一个类来包含具有各种约束的参数.基类型不应为null,一些参数(如default)也不应为null,而其他一些参数则应为null(我将根据需要判断它们是否为null).我找不到一种方法在课堂上以任何方式混合这些类型.
我最初认为可以将T定义为notnull,然后使用T?对于任何我希望为null的属性,虽然我可以定义类/函数,但试图调用代码的方式无法编译.
public class Parameter<T> where T : notnull {
public T Value { get; set;}
public T? Min { get; set; }
public void Set(T? value_)
{
}
}
Parameter<int> parameter = new();
parameter.Set(null);
如果我在类中通过VS2022判断Set,它会正确地显示Set(T?value\uu1)作为参数,但如果我判断参数.Set它显示Set(int值),然后拒绝编译上述用法:
Argument 1: cannot convert from int? to int
我曾考虑将可为null的属性定义为T2,并允许其为null,但我遇到了一个问题,即我无法比较或分配t和T2,这将无法达到目的.
我是否错过了一些愚蠢的事情,或者是否有其他方法可以做到这一点?