我有一个多个if的功能(这不是实际代码)
if(n == 1)
m = 1;
if(n == 2)
m = 2;
if(n == 3)
m = 3;
Run Code Online (Sandbox Code Playgroud)
而不是我想把它们全部变成?:表达式:
(n == 1) ? m = 1;
Run Code Online (Sandbox Code Playgroud)
但它说它期待':'
我熟悉C++中的?:表达式,你可以简单地写:
(n == 1) ? m = 1 : 0;
Run Code Online (Sandbox Code Playgroud)
但是0不会在这里.这是一个荒谬的问题,我甚至无法在谷歌中找到答案,因为它忽略了'?:'作为一个单词.
答案:答案在评论中太糟糕了.在这个表达式中无法"无所事事",我应该使用if-else或switch.谢谢.
Rob*_*Rob 14
看起来你正在寻找:
m = (n == 1) ? 1 : 0;
Run Code Online (Sandbox Code Playgroud)
然后您可以级联到:
m = (n == 1) ? 1 : (n == 2) ? 2 : (n == 3) ? 3 : 0;
Run Code Online (Sandbox Code Playgroud)
除此之外,一个重要的(对我而言):
你为什么这么问?如果是因为你认为这种形式比一系列if陈述更有效,或者a switch,那么.C#编译器和.net JIT编译器非常聪明,它们会将您的代码(希望!)转换为最佳形式.编写代码,使其成为您自己可以理解的代码,或者是您必须尽可能地维护代码的开发人员.如果你得到的性能是不可接受的,那么尝试改变它,但测量以确定什么是最好的(记住,较新的编译器/ .net框架可以很好地改变发生的事情).
在 C# 中查找三元运算符将为您提供相关结果。
一个示例用法是
var m = n == 1 ? 1 : 0
Run Code Online (Sandbox Code Playgroud)