我的同事是C#的新手,并不知道合并操作员.所以,我看到他写了一行代码:
string foo = "" + str;
想法是,如果str为null,则此表达式将返回空字符串.当然,这可以改写为:
string foo = str ?? "";
我觉得这会更具可读性.但这真的很重要吗?可读性的好处是否足以建议返回并使这些线看起来像第二个?或者这是我应该学会放手的事情之一(假设我的同事接受了未来最佳方式的教育)?
编辑:只是一个注释,我很欣赏效率评论,但这并没有真正用于任何性能至关重要的情况.因此,虽然这些信息很有趣,但并不一定是我认为重要的信息.
IMO,明确定义这样的逻辑要好得多,即不使用字符串连接来避免空字符串并使用条件语句或?? 运营商.
关于其他意见:
使用null-coalescing运算符也有一个性能优势,因为不需要进行连接(因此,不会不必要地创建额外的字符串实例)
不对.C#编译器将""+ string2编译为与string1相同的100%代码?"".此外,C#编译器转换+运算符以调用string.Concat方法,该方法又使用string.IsNullOrEmpty函数检查参数,并且在这种情况下不分配新字符串.
另外我建议使用String.Empty而不是"",因为它是一个常量,不需要创建一个新的String
.NET框架支持字符串实习,因此""和string.Empty指向相同的内存区域