Cus*_*dio 2 c# resharper resources
我想迭代一个列表并获取标签文本值.通过Resharper提示,显然一切都很好.代码:
string someString = GetLocalResourceObject(GetNameAsResource(resourceKey)) != null ?
GetLocalResourceObject(GetNameAsResource(resourceKey)).ToString() :
parametro.Parametro.Nome;
Run Code Online (Sandbox Code Playgroud)
并且在GetLocalResourceObject(GetNameAsResource(resourceKey)).ToString()
Resharper建议:可能是'System.NullReferenceException'我做错了什么或Resharper只是不认识以前的空验证?
TKS
由于GetLocalResourceObject()
是一个方法,ReSharper不知道第二次调用的返回值将与第一次调用的返回值相同!做这个:
var resourceObject = GetLocalResourceObject(GetNameAsResource(resourceKey));
string someString =
resourceObject != null
? resourceObject.ToString()
: parametro.Parametro.Nome;
Run Code Online (Sandbox Code Playgroud)
并且警告将消失,因为现在ReSharper知道resourceObject
在调用方法之前已经检查过null.
查看Null对象模式可能会更好- 也就是说,在GetLocalResourceObject
当前返回的情况下null
,让它返回一个表示"无资源"的实际对象.那么你根本不需要这种无效检查.