System.NullReferenceException: ... in C#

本文关键字:in NullReferenceException System | 更新日期: 2023-09-27 18:36:07

这是代码:

foreach (var property in this.allProperties)
        {
            var propertyItself = element.GetType().GetProperty(property.GetType().Name);
            if (propertyItself.PropertyType != typeof(Int32)) // Here I get System.NullReferenceException: Object reference not set to an instance of an object
            { continue; }
            if ((int)propertyItself.GetValue(element, null) == 0)
            { return false; }
        }

我想不通。如果有人可以或了解正在发生的事情,请帮助我们!提前谢谢!!

System.NullReferenceException: ... in C#

propertyItself变量为空。

这意味着此调用在某种程度上是不正确的:

element.GetType().GetProperty(property.GetType().Name);

我只是猜测,但我敢打赌,如果这是一个选项,这段代码应该property.GetType().Name property.ToString()property.Name

您传入的是property类型的名称,而不是其Name

如果没有任何调试器信息,就无法给出问题的具体答案。

尝试推杆

if(propertyIteself!=null && propertyIteslef.PropertyType!=null && propertyItself.PropertyType != typeof(Int32)) 
 { continue; }

这将空检查可能在该行上爆炸的两个项目。

或者试试这个

        foreach (var property in this.allProperties)
        {
          var propertyItself = element.GetType().GetProperty(property.GetType().Name);
          if(propertyItself!=null && propertyItself.PropertyType!=null)
           {
                if (propertyItself.PropertyType != typeof(Int32)) 
                { continue; }
                if ((int)propertyItself.GetValue(element, null) == 0)
                 { return false; }
            }
         }