如何正确检查和处理空值或对象
How to properly check and handle null values or objects
var userDomain = (from a in this.db.DomainList.ToList()
join b in this.db.UserDomain.ToList() on a.DomainId equals b.UserDomainId
where b.UserId == new System.Guid(user.ProviderUserKey.ToString())
select new
{
a.DomainId,
a.DomainName
}).FirstOrDefault();
string userDomainName = (userDomain.DomainName ?? "None").ToString(CultureInfo.InvariantCulture);
我有上面的示例代码。当 userDomain 为空时,我想将 userDomainName 变量设置为 "None" 否则如果 userDomain 不为空,则 userDomainName 变量应设置为 userDomain.DomainName
我试过下面的代码行
string userDomainName = (userDomain.DomainName ?? "None").ToString(CultureInfo.InvariantCulture);
但这不起作用,因为它会抛出错误
Object reference not set to an instance of an object.
如果 userDomain 为空。
是的,如果userDomain
是null
,那么
userDomain.DomainName
会失败。
在 C# 6 中,您可以使用 null 条件运算符来解决这个问题:
string userDomainName = userDomain?.DomainName ?? "None";
在 C# 6 之前,您需要:
string userDomainName =
(userDomain == null ? null : userDomain.DomainName) ?? "None";
假设 userDomain
可能为非空且 userDomain.DomainName
可能为空 - 如果不是,您可以使用:
string userDomainName = userDomain == null ? "None" : userDomain.DomainName;
请注意,您不需要 ToString
部分 - 在字符串上调用 ToString(CultureInfo.InvariantCulture)
永远不会改变它。
var userDomain = (from a in this.db.DomainList.ToList()
join b in this.db.UserDomain.ToList() on a.DomainId equals b.UserDomainId
where b.UserId == new System.Guid(user.ProviderUserKey.ToString())
select new
{
a.DomainId,
a.DomainName
}).FirstOrDefault();
string userDomainName = (userDomain.DomainName ?? "None").ToString(CultureInfo.InvariantCulture);
我有上面的示例代码。当 userDomain 为空时,我想将 userDomainName 变量设置为 "None" 否则如果 userDomain 不为空,则 userDomainName 变量应设置为 userDomain.DomainName
我试过下面的代码行
string userDomainName = (userDomain.DomainName ?? "None").ToString(CultureInfo.InvariantCulture);
但这不起作用,因为它会抛出错误
Object reference not set to an instance of an object.
如果 userDomain 为空。
是的,如果userDomain
是null
,那么
userDomain.DomainName
会失败。
在 C# 6 中,您可以使用 null 条件运算符来解决这个问题:
string userDomainName = userDomain?.DomainName ?? "None";
在 C# 6 之前,您需要:
string userDomainName =
(userDomain == null ? null : userDomain.DomainName) ?? "None";
假设 userDomain
可能为非空且 userDomain.DomainName
可能为空 - 如果不是,您可以使用:
string userDomainName = userDomain == null ? "None" : userDomain.DomainName;
请注意,您不需要 ToString
部分 - 在字符串上调用 ToString(CultureInfo.InvariantCulture)
永远不会改变它。