C# 参考';GetUnderlineType';从调用函数返回';GetUnderlineType';可能为空
在进行代码分析时,我正在了解Klocwork问题 调用函数“GetUnderlyingType”返回的引用“GetUnderlyingType”可能为空C# 参考';GetUnderlineType';从调用函数返回';GetUnderlineType';可能为空,c#,klocwork,C#,Klocwork,在进行代码分析时,我正在了解Klocwork问题 调用函数“GetUnderlyingType”返回的引用“GetUnderlyingType”可能为空 if (Nullable.GetUnderlyingType(objProperty.PropertyType) != null) { value = row[columnname].ToString().Replace("$", "").Replace(",", "");
if (Nullable.GetUnderlyingType(objProperty.PropertyType) != null)
{
value = row[columnname].ToString().Replace("$", "").Replace(",", "");
objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(Nullable.GetUnderlyingType(objProperty.PropertyType).ToString())), null);
}
else
{
value = row[columnname].ToString().Replace("%", "");
objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(objProperty.PropertyType.ToString())), null);
}
返回值类型:System.Type 如果为nullableType,则为nullableType参数的类型参数 参数是一个封闭的泛型可空类型否则为空
if (Nullable.GetUnderlyingType(objProperty.PropertyType) != null)
{
value = row[columnname].ToString().Replace("$", "").Replace(",", "");
objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(Nullable.GetUnderlyingType(objProperty.PropertyType).ToString())), null);
}
else
{
value = row[columnname].ToString().Replace("%", "");
objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(objProperty.PropertyType.ToString())), null);
}
您可以使用外部if
子句来处理此问题,但VisualStudio似乎无法识别它。解决办法是:
var ut = Nullable.GetUnderlyingType(objProperty.PropertyType);
if (ut != null)
{
value = row[columnname].ToString().Replace("$", "").Replace(",", "");
objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(ut.ToString())), null);
}
else
{
value = row[columnname].ToString().Replace("%", "");
objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(objProperty.PropertyType.ToString())), null);
}
这里需要什么代码更改,你能发布代码吗?我错过了外部if子句。空值已处理,但VS无法识别。