我有一个简单的类,其中实现了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";
我对这些的看法是
答案 0 :(得分:6)
我更喜欢扩展方法:
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");
答案 1 :(得分:3)
创建一个静态ToString
方法,并将其称为:
string result = Astronaut.ToString(person);
分解公共代码的最佳方式。
答案 2 :(得分:1)
我记得一本设计模式书告诉我你为了填充空对象而实例化的一些对象。它们会返回名称为空字符串的内容,或者长度为0的内容,依此类推。听起来不是一个坏主意。
您还可以将其实现为Astronaut
类的静态方法:
String result = Astronaut.getName(person);
答案 3 :(得分:0)
您还可以在将宇航员转换为字符串的类中放置静态方法,如果参数为null,则返回“未知宇航员”。
以类似的方式,你可以使它成为一个扩展方法,并直接在该类型的变量上调用它,即使它是null。