我有这个代码来排序我的数组,我只是意识到排序不起作用:
if(desc)items.OrderByDescending(x=>x.ExpirationDate);
else items.OrderBy(x=>x.ExpirationDate);
Run Code Online (Sandbox Code Playgroud)
正确的代码是:
if(desc)items=items.OrderByDescending(x=>x.ExpirationDate).ToArray();
else items=items.OrderBy(x=>x.ExpirationDate).ToArray();
Run Code Online (Sandbox Code Playgroud)
但为什么编译器(我使用Mono和Visual C#2010)不会给我一个错误,甚至是警告?我错过了一些设置,或者C#编译器根本不可能意识到我的原始代码是无用的?如果是后者,是否有任何lint工具可以查找这样的特定错误,我可以添加到我的编译中?
调用函数并忽略结果是完全有效的.编译器不知道特定功能是纯粹的还是有副作用的.
在这种情况下我不认为有错误/警告.
通常用忽略结果调用的函数调用示例:Dictionary.Remove - 它实际上返回true/ false与几乎所有其他Dictionary/ List函数不同.