我正在尝试检查字段值是否为空。
假设该项目是有效的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
答案 0 :(得分:6)
尝试使用空条件运算符。
示例: 如果Property为null:
EntryID = item.EntryID?.ToString() ?? "(nothing)";
如果项目为空:
EntryID = item?.EntryID.ToString() ?? "(nothing)";
或全部选中
EntryID = item?.EntryID?.ToString() ?? "(nothing)";
答案 1 :(得分:-2)
尝试使用三元条件运算符
Condition ? True : False
如果您要从数据库中检索数据,则此
if(item.EntryID.ToString() == DBNull) ? item.EntryID.ToString() : "(nothing)";
如果仍然显示错误,则尝试将?放入EntryID的数据类型
public string? EntryID;