在C#中连接字符串时处理空异常的最佳方法?

时间:2012-03-05 17:47:18

标签: c# null

我有这行代码可以抛出空异常。

singleAddress.FullAddress = cc.MailingAddressStreet1.ToString() + " " +
   cc.MailingAddressCity.ToString() + " " +
   cc.MailingAddressState.ToString() + " " +
   cc.MailingAddressZip.ToString() + " " +
   cc.MailingAddressCountry.ToString();

我知道我可以通过添加if语句来检查它是否为null。但是有更好的推荐方法吗?

我只是想学习如何更好地处理这些异常(并且不必编写超出我需要的代码)。提前谢谢。

4 个答案:

答案 0 :(得分:10)

您可以使用String.Join Method

if (cc != null)
{
    singleAddress.FullAddress = string.Join(" ",
        cc.MailingAddressStreet1,
        cc.MailingAddressCity,
        cc.MailingAddressState,
        cc.MailingAddressZip,
        cc.MailingAddressCountry);
}

String.Join Method采用可变数量的object个参数,并在每个非null的参数上调用Object.ToString Method

答案 1 :(得分:3)

String.Join方法似乎是一种很好的方法,但不要忘记空合并运算符,例如

var s = (cc.MailingAddressStreet1 ?? string.Empty) + ...

我假设cc.MailingAddressStreet1已经是一个字符串了。

这使您可以选择在字符串为空时使用替代字符串,例如

var s = (cc.MailingAddressStreet1 ?? "(n/a)") + ...

并且不要忘记括号:)

答案 2 :(得分:3)

我可能只是使用string.Format

singleAddress.FullAddress = string.Format("{0} {1} {2} {3} {4}",
    cc.MailingAddressStreet1, cc.MailingAddressCity, cc.MailingAddressState,
    cc.MailingAddressZip, cc.MailingAddressCountry);

NullReferenceExceptions是由于调用ToString - 无论如何都会发生非空值(即使在您的原始代码中),如果属性类型已经string,则毫无意义...

答案 3 :(得分:1)

String.Concat应该可以工作

http://msdn.microsoft.com/en-us/library/system.string.concat.aspx

singleAddress.FullAddress = String.Concat(cc.MailingAddressStreet1.ToString(), 
                                        " ", cc.MailingAddressCity.ToString(), 
                                        " ", cc.MailingAddressState.ToString(),
                                        " ", cc.MailingAddressZip.ToString(),
                                        " ", cc.MailingAddressCountry.ToString());