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

本文关键字:异常 null 最佳 方法 处理 连接 字符串 | 更新日期: 2023-09-27 18:26:40

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

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

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

我只想学习如何更好地处理此类异常(而不必编写超出我需要的代码)。提前谢谢。

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

您可以使用String.Join方法:

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

String.Join方法采用数量可变的object参数,并对每个不是null的参数调用Object.ToString方法。

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

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

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

这为您提供了在字符串为空时使用替代字符串的选项,例如

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

不要忘记括号:)

我可能只会使用string.Format:

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

NullReferenceExceptions是由于调用了ToString——对于非null值(即使在原始代码中),这无论如何都会发生,如果属性类型已经是string,那么这是毫无意义的。。。

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());