您更喜欢哪种编码风格:
object o = new object();
//string s1 = o ?? "Tom"; // Cannot implicitly convert type 'object' to 'string' CS0266
string s3 = Convert.ToString(o ?? "Tom");
string s2 = (o != null) ? o.ToString() : "Tom";
Run Code Online (Sandbox Code Playgroud)
s2还是s3?
是否可以缩短它?s1显然不起作用.
在这种情况下,我认为我的偏好是:
string s1 = (string)o ?? "Tom";
Run Code Online (Sandbox Code Playgroud)
要么:
string s1 = (o as string) ?? "Tom";
Run Code Online (Sandbox Code Playgroud)
根据是否o真的有望成为string与否.无论哪种方式,我更喜欢这些,因为它们更好地表达了正在做的事情,并且如果o已经是,那么不要通过不必要的转换传递这些string.
作为一般规则,我更喜欢哪个更清晰和/或实际工作.使用字符串时,我经常需要写这样的东西:
string result = !string.IsNullOrEmpty(value) ? value : "Default";
Run Code Online (Sandbox Code Playgroud)
...使用null-coalescing运算符根本无法完成.另一方面,如果我想要合并大量的值,它会好大约500倍:
var result = firstTry ?? secondTry ?? thirdTry ?? fourthTry ?? fifthTry;
Run Code Online (Sandbox Code Playgroud)
尝试用三元运算符来编写它.
如果差异不是那么引人注目,如果它只是在一行代码中的几个字符,那真的没关系,只要使用你喜欢的任何东西.