为什么以下代码行不能在方法中起作用?
return (count > 0) ? true : false;
如果我这样做,它的效果非常好:
bool ret = (count > 0) ? true : false;
return ret;
奖金问题:它是否比标准if语句更快或更有效?
bool ret = false;
if(count > 0)
ret = true;
return ret;
你会推荐哪一个?
答案 0 :(得分:41)
我建议:
return count > 0;
无需明确返回true
或false
。
话虽如此,你的编译错误引起了我的兴趣。乍一看,它看起来应该有效。你能发布一个简短但完整的例子,无法编译吗?该条件表达式的类型应为bool
,没有任何问题。我的猜测是你有一个更复杂的场景,通过简化示例你已经删除了真正的问题。
关于奖金问题:我不知道哪个更快,我也不关心99.99%的情况。我会感到惊讶发现它造成了任何重大延迟,除非出于某种原因禁止内联。寻找最简单的可读解决方案 - 这是简单的返回语句,IMO。
答案 1 :(得分:10)
试试这个:
return count > 0;
在返回之前返回表达式计数>评估0并给出真或假。
这也应该有效:
return (count > 0 ? true : false);
但我建议你不要这样做。
我总是尽量保持低水平操作的数量,我相信这样可以更容易地读取代码。
想象下面的场景会让人感到困惑:)
return count > 0 ? false : true;
答案 2 :(得分:5)
从C#
的角度来看return count > 0;
对于它的可读性更好。
但是编译器会优化代码,因此编译后你的三个选项实际上是相同的。您可以尝试查看IL代码以进行验证!
答案 3 :(得分:1)
这是有效的
return (count > 0 ? true : false);
然后,您可以返回除true和false之外的其他值。在你的特殊情况下,我会像其他建议一样;返回计数> 0;