如何解决验证对象时C#编译器的空状态静态分析 NotNullAttribute
我在项目中启用了Nullable检查,并在代码中的许多地方检查了输入对象及其属性,如果出现问题,则引发异常。但是,如果一切正常,那么我可以确定输入对象不是null。有没有办法告诉编译器,以某种方式使用NotNullWhen属性或类似的东西?我不想在代码中的任何地方禁用可空检查。
void Validate(MyClass1? obj1,MyClass2 obj2)
{
if (obj1 == null || obj2 == null)
{
throw new ArgumentNullException();
}
}
void DoSomething(MyClass1 obj1,MyClass2 obj2)
{
// This method requires not-null objects
...
}
void Process(MyClass1? obj1,MyClass2 obj2)
{
Validate(obj1,obj2);
// this produces warning,requires to explicitly check if both objects are not null
DoSomething(ob1,obj2);
}
解决方法
您可以从$ adb shell pm clear com.android.providers.contacts
命名空间使用NotNullAttribute
:
指定即使相应类型允许输出也不为空。指定调用返回时输入参数不为空。
$ adb shell am start -a android.intent.action.VIEW content://com.android.contacts/contacts/1
另外this文章也可能有帮助。
,我认为[NotNull]
和。 [ItemNotNull]
属性是您要寻找的。请参阅文档here和here。
NotNullAttribute
表明标记元素的值永远不能为空。
(示例)
[NotNull] object Foo() {
return null; // Warning: Possible 'null' assignment
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。