我有一个Address属性AddressLine1,AddressLine2,Suburb,State,ZipCode。 (还有更多,但这个例子足够了)。此外,每个属性都是字符串。我正在使用C#3.0。将地址对象转换为字符串的最佳方式是什么?
我想它表示为一个字符串,但我做了我发现,我创建具有高圈复杂度的方法,由于所有的if语句...
假设分配给每个属性的字符串与属性的名称相同(即AddressLine1 =“AddressLine1”)...我希望地址如下所示:
“AddressLine1 AddressLine2 Suburb State ZipCode”。现在
,原有的方式,我做了,这是通过简单的String.Format()
String.Format("{0} {1} {2} {3} {4}", address.AddressLine1,
address.AddressLine2, address.Suburb, address.State, address.ZipCode);
这是一个好主意,直到我发现了一些这些字段可以是空..特别是AddressLine2。其结果是额外的不必要的空间......当你连续得到几个时,这些空间特别恼人。
为了解决这个问题,以及我能想到的唯一解决方案,我必须手动构建字符串,并且只将地址属性添加到字符串(如果它们不为null或为空)。
即
string addressAsString = String.Empty;
if (!String.IsNullOrEmpty(address.AddressLine1))
{
addressAsString += String.Format("{0}", address.AddressLine1);
}
if(!String.IsNullOrEmpty(address.AddressLine2))
{
addressAsString += String.Format(" {0}", address.AddressLine2);
}
etc....
是否有一个更优雅和/或简明的方式来实现这一目标,我不是在想什么?我的解决方案只是感觉凌乱和臃肿...但我想不出一个更好的方式来做到这一点...
对于我所知道的,这是我唯一的选择给予我想要做的..但我只是认为我会把它放在那里,看看比我更有经验的人是否知道更好的方法。如果没有更好的选择,那么哦...但如果有的话,那么我会去学习一些我以前不知道的东西。
在此先感谢!
,看起来像一个有趣的解决方案...我会尝试一下,看看它是如何去... – mezoid 2009-03-02 01:27:16
烨... C#3.0是我使用的是什么.. 。我会更新标签,以反映... – mezoid 2009-03-02 01:28:00
真棒解决方案格雷格!感谢堆!它将20多行减少到3个易于理解的易于理解的行。我真的需要在Linq开始思考。 – mezoid 2009-03-02 01:45:35