问题描述
我在项目中启用了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
}