我有一个简单的类,它有一个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),但我不确定它是否会起作用。编译器不会抱怨 a
string
& aAstronaut
类型不是同一类型,因此不能在 coalese 中使用。 - 这是我现在最满意的一个,但这意味着一个盒子 &
ToString
应该person
为空。
总之:
- 对上述任何一项有任何优点/缺点吗?
- 你能想到什么选择吗?