C# 参考';GetUnderlineType';从调用函数返回';GetUnderlineType';可能为空

C# 参考';GetUnderlineType';从调用函数返回';GetUnderlineType';可能为空,c#,klocwork,C#,Klocwork,在进行代码分析时,我正在了解Klocwork问题 调用函数“GetUnderlyingType”返回的引用“GetUnderlyingType”可能为空 if (Nullable.GetUnderlyingType(objProperty.PropertyType) != null) { value = row[columnname].ToString().Replace("$", "").Replace(",", "");

在进行代码分析时,我正在了解Klocwork问题

调用函数“GetUnderlyingType”返回的引用“GetUnderlyingType”可能为空

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无法识别。