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

Mr.*_*ith 10 c# syntax

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

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)

没有必要明确返回truefalse.

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


ema*_*ema 5

从C#的角度来看

return count > 0;
Run Code Online (Sandbox Code Playgroud)

更好的是它的可读性.

但编译器会优化代码,因此编译后您的三个选项实际上是相同的.您可以尝试查看IL代码进行验证!