【问题标题】:Getting null reference exception when add empty string to list [duplicate]将空字符串添加到列表时出现空引用异常[重复]
【发布时间】:2015-08-02 17:27:04
【问题描述】:

这是我的代码..我无法在列表中添加空值。获取空引用异常。如何避免它

List<string> lst = new List<string>();
 var empPersonal = context.tblEmployeePersonalDetails.Where(x => x.isDelete == false && x.empId == id).First();
lst.Add(empPersonal.gender.ToString() != null ? empPersonal.gender.ToString() :string.Empty);

【问题讨论】:

  • 你在哪一行得到错误?
  • 在几乎所有情况下 NullReferenceException 都是相同的。参考What is a NullReferenceException and how do I fix it?
  • NullReferenceException 并不意味着您要添加的 itemnull。您可以毫无问题地将空字符串添加到列表中。运行时告诉您的是,您正在尝试访问指向 null 的引用上的属性。例如:1) context 为空,但您正在访问 context.tblEmployeePersonalDetails,或 2) empPersonal 为null,但您正在访问 empPersonal.gender,或 3) empPersonal.gender 为 null,但您正在访问 empPersonal.gender.ToString()。您可能还想使用FirstOrDefault 而不是First

标签: c# asp.net types casting type-conversion


【解决方案1】:
List<string> lst = new List<string>();
var empPersonal = context.tblEmployeePersonalDetails
    .FirstOrDefault(x => x.isDelete == false && x.empId == id);
lst.Add(empPersonal != null ? empPersonal.gender.ToString() :string.Empty);

【讨论】:

    【解决方案2】:

    如果empPersonal.gendernull,则调用empPersonal.gender.ToString() 将产生错误。

    你可能想写的是:

    lst.Add(empPersonal.gender != null ? empPersonal.gender.ToString() : string.Empty);
    

    【讨论】:

      【解决方案3】:

      也许

      改变

      lst.Add(empPersonal.gender.ToString() != null ? empPersonal.gender.ToString() :string.Empty);
      

      lst.Add(empPersonal != null && empPersonal.gender != null ? empPersonal.gender.ToString() :string.Empty);
      

      这会捕获 empPersonal 为 null 并且 empPersonal.gender 为 null,因为两者都可能为 null。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多