如果在编写类库时启用了可为空的引用类型,则开发人员可能不会总是检查null
,因为编译器不会发出警告/错误。
在启用了可为空的引用类型的库中添加以下代码:
public class Class1
{
public void MyMethod(string s)
{
// don't check for null as compiler is happy
s.ToLower();
}
public void MyMethod2(string? s)
{
// check for null as compiler is warning otherwise
if (s != null)
{
this.MyMethod(s);
}
}
}
如果调用方Class1.MyMethod
的消费者未启用可为空的引用类型,则他们在进行以下调用时不会收到警告:
var c = new Class1();
c.MyMethod(null);
是否有可能以某种方式强制或至少警告使用代码以启用可空引用类型?
答案 0 :(得分:1)
不可能是有充分理由的。如果可以想象您向项目中添加了一个新库,并迫使您更新成千上万行代码。
由于可空性没有运行时影响,因此作为库作者,您应始终在公共接口中测试参数以验证无效输入。如果您验证公共接口上的输入,则库内部可以安全地依赖于可为空性。