我想迭代列表并获取标签文本值。通过Resharper提示,显然一切都很好。代码:
string someString = GetLocalResourceObject(GetNameAsResource(resourceKey)) != null ?
GetLocalResourceObject(GetNameAsResource(resourceKey)).ToString() :
parametro.Parametro.Nome;
在GetLocalResourceObject(GetNameAsResource(resourceKey)).ToString()
Resharper建议:可能'System.NullReferenceException'
我做错了什么或Resharper只是不认识以前的空验证?
韩国社交协会
答案 0 :(得分:6)
由于GetLocalResourceObject()
是方法,ReSharper不知道第二次调用的返回值将与第一次调用的返回值相同!这样做:
var resourceObject = GetLocalResourceObject(GetNameAsResource(resourceKey));
string someString =
resourceObject != null
? resourceObject.ToString()
: parametro.Parametro.Nome;
并且警告将消失,因为现在ReSharper知道在调用方法之前已检查resourceObject
是否为null。
最好查看Null Object Pattern - 也就是说,在GetLocalResourceObject
当前返回null
的情况下,让它返回一个代表'无资源'的实际对象。那么你根本不需要这种无效检查。