【发布时间】:2018-07-24 12:08:20
【问题描述】:
编辑:感谢您的回答,那么应该如何写才能清楚地在每一行中说明条件是什么,或者为了可读性而保持原样? p>
我从How do I concatenate two arrays in C#? 中采用了answer 来返回一个空数组而不是抛出错误
public static T[] Concat<T>(this T[] x, T[] y)
{
if (x == null && y != null) return y;
if (x != null && y == null) return x;
if (x == null && y == null) return new T[0];
int oldLen = x.Length;
Array.Resize<T>(ref x, x.Length + y.Length);
Array.Copy(y, 0, x, oldLen, y.Length);
return x;
}
Resharper 正在制作波浪线,“表达式始终为真”提示:
我不明白的是 2 个不同的变量应该有 4 个不同的情况,每个 2 个,4 的排列:(x 为空,x 不为空)(y 为空,y 不为空)
所以我试图在 if 中捕获 4 个案例
更改行的顺序只是将波浪线移动到最后一个 if 行。
【问题讨论】:
-
您的第一个条件符合
y == null。 -
您的编辑现在更像是一个基于意见的问题。我个人更喜欢@MichaelRandall 的答案中的两行版本,其次是我的答案中的三行版本。但如果你更喜欢你写的那个,那就用那个吧!最后不会有什么不同。什么被认为是“可读的”部分取决于你阅读代码的时间。我仍然不能总是第一次阅读 Linq
Zip语句。 :) -
@RufusL :我刚刚明白我需要什么,Michael Randall 的代码就是我想要的,谢谢!
标签: c# optimization resharper