MemberNotNullAttribute 是 .NET 5 的新增特性,位于System.Diagnostics.CodeAnalysis。该特性用于显式声明,调用此方法后该值不再为 Null。
示例如下,创建一个 csproj,启用 C# 8.0 的空引用类型新特性。
net5.0 enable $(WarningsAsErrors);CS8600;CS8602;CS8603;CS8618;CS8625
如下图所示,由于编译器无法保证 _mayNullStr.Length 不会引发空引用异常,所以抛出编译错误 CS8602;
此时可以通过添加 MemberNotNull 特性,显式地告诉编译器方法 PromisStrNotNull() 可以保证 _mayNullStr 不为 Null。
此外他还有一个姊妹 MemberNotNullWhenAttribute
////// 返回 true 时, ///不为 null /// [MemberNotNullWhen(true, nameof(_mayNullStr))] private bool StrNotNullWhenReturnTrue() { if (DateTime.Now.DayOfWeek == DayOfWeek.Friday) { _mayNullStr = "明天不用上班啦!"; return true; } _mayNullStr = null; return false; }


![.NET 5 C# 的 [MemberNotNull] 特性起到什么作用? .NET 5 C# 的 [MemberNotNull] 特性起到什么作用?](http://www.mshxw.com/aiimages/31/911324.png)
