在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来修复它。但是有更好的推荐方法吗?
我只想学习如何更好地处理此类异常(而不必编写超出我需要的代码)。提前谢谢。
您可以使用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());