在Resharper中可能不正确的“可能的'System.NullReferenceException'”提示

时间:2011-03-16 20:54:09

标签: c# resources resharper

我想迭代列表并获取标签文本值。通过Resharper提示,显然一切都很好。代码:

string someString = GetLocalResourceObject(GetNameAsResource(resourceKey)) != null ?
                GetLocalResourceObject(GetNameAsResource(resourceKey)).ToString() :
                parametro.Parametro.Nome;

GetLocalResourceObject(GetNameAsResource(resourceKey)).ToString() Resharper建议:可能'System.NullReferenceException' 我做错了什么或Resharper只是不认识以前的空验证?

韩国社交协会

1 个答案:

答案 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的情况下,让它返回一个代表'无资源'的实际对象。那么你根本不需要这种无效检查。