在C#中使用return和short-hand if

时间:2009-09-08 08:18:22

标签: c# syntax

为什么以下代码行不能在方法中起作用?

return (count > 0) ? true : false;

如果我这样做,它的效果非常好:

bool ret = (count > 0) ? true : false;
return ret;

奖金问题:它是否比标准if语句更快或更有效?

bool ret = false;
if(count > 0)
    ret = true;
return ret;

你会推荐哪一个?

4 个答案:

答案 0 :(得分:41)

我建议:

return count > 0;

无需明确返回truefalse

话虽如此,你的编译错误引起了我的兴趣。乍一看,它看起来应该有效。你能发布一个简短但完整的例子,无法编译吗?该条件表达式的类型应为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;