为什么以下代码行不能在方法中工作?
return (count > 0) ? true : false;
Run Code Online (Sandbox Code Playgroud)
如果我这样做,它完全正常:
bool ret = (count > 0) ? true : false;
return ret;
Run Code Online (Sandbox Code Playgroud)
奖金问题:它是否比标准if语句更快或更有效?
bool ret = false;
if(count > 0)
ret = true;
return ret;
Run Code Online (Sandbox Code Playgroud)
你会推荐哪一个?
Jon*_*eet 42
我建议:
return count > 0;
Run Code Online (Sandbox Code Playgroud)
没有必要明确返回true
或false
.
话虽如此,你的编译错误引起了我的兴趣.乍一看,它看起来应该有效.你能发布一个简短但完整的例子,无法编译吗?该条件表达式的类型应该bool
没有问题.我的猜测是你有一个更复杂的场景,通过简化示例你已经删除了真正的问题.
至于奖金问题:我不知道哪个会更快,我也不在乎99.99%的情况.我会惊讶地发现它造成了任何重大延迟,除非因某种原因禁止内联.寻求最易读的解决方案 - 这是简单的返回声明,IMO.
Mak*_*ach 11
试试这个:
return count > 0;
Run Code Online (Sandbox Code Playgroud)
在return返回之前,表达式count> 0被计算并给出true或false.
这应该也有效:
return (count > 0 ? true : false);
Run Code Online (Sandbox Code Playgroud)
但我建议你不要这样做.
我总是尽量保持低水平操作的数量,我相信这样可以更容易地读取代码.
想象一下以下情况会让人困惑:)
return count > 0 ? false : true;
Run Code Online (Sandbox Code Playgroud)
从C#的角度来看
return count > 0;
Run Code Online (Sandbox Code Playgroud)
更好的是它的可读性.
但编译器会优化代码,因此编译后您的三个选项实际上是相同的.您可以尝试查看IL代码进行验证!
归档时间: |
|
查看次数: |
30337 次 |
最近记录: |