我有一个简单的类,该类实现了ToString
,对此内容感到满意。我试图通过查看各种选项是否存在赞成/反对来决定(最)正确的方法。
对于以下示例:
类别:Astronaut
类型为Astronaut
的变量:person
我在这里只是雪球的选择:string result = person == null ? "Unknown Astronaut" : person.ToString();
string result = person.ToString() ?? "Unknown Astronaut";
string result = (person ?? "Unknown Astronaut").ToString();
string result = person ?? (object)"Unknown Astronaut";
我对这些的看法是
非常冗长,我不需要那么详细。
比1好得多,但是ToString
感觉很丑,而且担心该ToString
代码中的异常。
这似乎很流行(here和here),但是我不确定它是否可以正常工作。编译器不会抱怨string
和Astronaut
类型不是同一类型,因此不能在合并中使用。
这是我现在最高兴的那个,但这意味着一个框&ToString
应该person
为空。
综上所述:
以上任何优点/缺点吗?
您能想到的任何选择吗?
最佳答案
我更喜欢一种扩展方法:
public static string SafeToString(this Object obj)
{
return obj.SafeToString(string.Empty);
}
public static string SafeToString(this Object obj, string defaultString)
{
return obj == null ? defaultString : obj.ToString();
}
所以对你的问题:
string result = person.SafeToString("Unknown Astronaut");