【发布时间】:2018-09-30 17:33:42
【问题描述】:
我正在尝试检查字段值是否为空。
假设该项目是一个有效的 Outlook ContactItem,我原以为下面的代码会检查空值并在相关字段为空时返回“(Empty)”。
EntryID = item.EntryID.ToString() ?? "(nothing)";
Title = item.Title.ToString() ?? "(nothing)";
First_Name = item.FirstName.ToString() ?? "(nothing)";
Middle_Name = item.MiddleName.ToString() ?? "(nothing)";
Last_Name = item.LastName.ToString() ?? "(nothing)";
Suffix = item.Suffix.ToString() ?? "(nothing)";
Company = item.CompanyName.ToString() ?? "(nothing)";
Home_Phone = item.HomeTelephoneNumber.ToString() ?? "(nothing)";
Mobile_Phone = item.MobileTelephoneNumber.ToString() ?? "(nothing)";
FirstLastName= item.LastNameAndFirstName.ToString() ?? "(nothing)";
但是,在其他字段上发生的情况是如下错误:
Object reference not set to an instance of an object.
该错误不是严格意义上的 NullReferenceException - 该错误与联系人字段有关,而不是与 ContactItem 对象有关。
现在我是否正确地说该错误实际上是告诉我该字段实际上是一个对象,如果它确实包含文本,则会从 ContactItem 中删除?
我已尝试通过填写 Outlook 联系人中的每个字段来缓解错误 - 不会引发错误 - 但如果我删除字段内容,例如 CompanyName,代码将在该行以相同的方式失败错误。
如果我是对的,那么在尝试获取字段内容之前如何检查对象是否存在?
MTIA
DWE
【问题讨论】:
-
如果
item为null,访问item.EntryID将导致此异常。如果EntryID为空,则调用item.EntryID.ToString()将抛出此异常,以此类推。 Sichi的建议很好。
标签: c#