【问题标题】:NullReference Exception in C# [duplicate]C# 中的 NullReference 异常 [重复]
【发布时间】:2013-07-05 07:37:35
【问题描述】:

我收到System.NullReferenceException: Object reference not set to an instance of an object. 异常,代码如下。

   string avblCount = "0";

    if (!string.IsNullOrWhiteSpace(item.PART_AVAILABILITY.AVAIL_COUNT.ToString() as string))
    {
         avblCount = item.PART_AVAILABILITY.AVAIL_COUNT.ToString();
    }

此行发生异常。

if (!string.IsNullOrWhiteSpace(item.PART_AVAILABILITY.AVAIL_COUNT.ToString() as string))

我该如何解决这个问题?

【问题讨论】:

  • item.PART_AVAILABILITY.AVAIL_COUNT.ToString() as string) 为什么?只做字符串不会抛出错误
  • itemCAPSLOCKHAPPYPROPERTY 为 null,编辑,为什么不先检查这些是否为 null 而不是先将其转换为字符串?
  • item.PART_AVAILABILITY.AVAIL_COUNT 的每个部分都存在吗?例如,如果 PART_AVAILABILITY 为空怎么办?
  • “我该如何解决这个问题?” - 通过搜索网络。仅在 SO 上就有数千个关于此错误的问题。尝试理解错误的含义。
  • 如果您使用 C# 编程,您绝对必须了解 NullReferenceException 是什么,它们是如何产生的,它们在运行时如何呈现,您如何处理它们、减轻它们并最终避免它们。跨度>

标签: c# asp.net nullreferenceexception


【解决方案1】:

这些实体中有一个或多个为空:

  • 项目
  • item.PART_AVAILABILITY
  • item.PART_AVAILABILITY.AVAIL_COUNT

你应该检查哪个是,然后采取相应的行动

【讨论】:

  • 你是认真的吗?如果 item 为 null,则 3 为 null。如果 item 不为空但 PART_AVAILABILTY 为空,则有 2 个空值。如果 item 和 PART_AVAILABILTY 不为 null,则 AVAIL_COUNT 为。
  • 完全正确:根据问题,它们会导致 NullReferenceEx。它只是火焰还是字典检查?
  • 好吧,我不会再争论了,但在我看来,如果 item 为 null,它的所有属性都是“未定义的”:在 .NET 中没有“未定义”关键字,显然它进入反射以检查给定对象中的属性是否可用是没有意义的。所以,我以一种非特定的方式使用了“null”,但你是对的:编译器眼中的 undeclared/undefined != null :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-25
  • 1970-01-01
  • 2013-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多