C# 如果为空,则为空字符串
我的代码中有:C# 如果为空,则为空字符串,c#,asp.net-mvc,C#,Asp.net Mvc,我的代码中有: SelectList(blah, "blah", "blah", cu.Customer.CustomerID.ToString()) 当它返回null时会出现错误,如果CustomerID为null,如何使它成为空字符串 /M(针对C#6.0的更新) 如果您使用的是C#6或更高版本(Visual Studio 2015或更高版本),则可以通过以下方式实现: null条件运算符的一个有用属性是,如果要测试多个嵌套属性是否为null,还可以将其“链接”: // ensure (a
SelectList(blah, "blah", "blah", cu.Customer.CustomerID.ToString())
当它返回null时会出现错误,如果CustomerID为null,如何使它成为空字符串
/M(针对C#6.0的更新)
如果您使用的是C#6或更高版本(Visual Studio 2015或更高版本),则可以通过以下方式实现:
null条件运算符的一个有用属性是,如果要测试多个嵌套属性是否为null,还可以将其“链接”:
// ensure (a != null) && (b != null) && (c != null) before invoking
// a.b.c.CustomerId, otherwise return "" (short circuited at first encountered null)
var customerId = a?.b?.c?.CustomerId.ToString() ?? "";
对于6.0(VS2013或更高版本)之前的C#版本,您可以这样合并它:
string customerId = cu.Customer != null ? cu.Customer.CustomerID.ToString() : "";
在尝试访问其成员之前,只需检查对象是否为非null,否则返回空字符串
除此之外,还有一些情况下模式是有用的。这意味着您要确保
客户的父类(在本例中为cu
类型)始终返回对象的实际实例,即使它是“空的”。如果您认为此链接可能适用于您的问题,请查看此链接以获取示例:。它取决于客户ID的类型
如果CustomerID
是字符串,则可以使用:
如果CustomerID
是,则可以使用:
SelectList(blah, "blah", "blah", cu.Customer.CustomerID.ToString())
(myObject ?? "").ToString()
这将起作用,因为如果实例为null
(从技术上讲,如果属性为false
),则null
方法返回空字符串。(C#2.0-C#5.0)
三元运算符可以工作,但如果您想在任意对象上使用更短的表达式,可以使用:
SelectList(blah, "blah", "blah", cu.Customer.CustomerID.ToString())
(myObject ?? "").ToString()
下面是我的代码中的真实示例:
private HtmlTableCell CreateTableCell(object cellContents)
{
return new HtmlTableCell()
{
InnerText = (cellContents ?? "").ToString()
};
}
CustomerID
是空值,还是Customer
本身是空值?另外,CustomerID
的类型是什么?此代码的结果之一是冗余的”。ToString()
,而且(myObject??)
仅当myObject
首先是字符串时才起作用,这使得.ToString()
更加不必要。我想你的意思是myObject?.ToString()??“”
@ensisNoctis 1。这是在我们有C#5的时候写的,它没有?。
操作符。对于C#6+,我会使用?。
。2. .ToString()
可以很好地处理对象。我坚持我的答案,范围是C#2-C#5:更新以澄清。我同意:)
private HtmlTableCell CreateTableCell(object cellContents)
{
return new HtmlTableCell()
{
InnerText = (cellContents ?? "").ToString()
};
}