提问人:Astemir Almov 提问时间:12/9/2021 更新时间:12/9/2021 访问量:541
可为 null 的引用类型和 null-oblivious 库
Nullable reference types and null-oblivious libraries
问:
最近,我们开始在项目中使用 C# 可为 null 的引用类型。 当然,在我们的项目中,我们使用不支持可为 null 的引用类型的 nuget 库。
使用此类库的最佳实践是什么? 我说的是这样的情况:
public class MyClass
{
public string myString { get; }
public MyClass(string myString)
{
this.myString = myString;
}
}
可以使用外部 null-oblivious 库中的 null 值初始化属性。分析器不会以任何方式警告您。 代码将抛出 NullReferenceException。 这就是为什么在我看来,可为 null 的引用类型有点无用。 以前,我们使用守卫来验证构造函数中的属性,如下所示:
public MyClass(string myString)
{
if (myString == null) throw new ArgumentNullException();
this.myString = myString;
}
是否有其他防御技术和最佳做法来保护代码免受 NullReferenceException 的影响?
答: 暂无答案
评论
var x = new MyClass(null!);
class MyClass{ string myString { get; set;} = default! }