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为null时,我想将userDomainName varibale设置为" None"否则,如果userDomain不为null,则userDomainName变量应设置为userDomain.DomainName
我试过下面的代码行
string userDomainName = (userDomain.DomainName ?? "None").ToString(CultureInfo.InvariantCulture);
但这确实有效,因为它会抛出错误
对象引用未设置为对象的实例。
如果userDomain为null。
答案 0 :(得分:3)
是的,如果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)
永远不会更改它。