有人可以用简单的英语或伪代码解释三元运算符吗?

时间:2013-10-02 18:51:14

标签: c# syntax ternary-operator conditional-operator

我不理解以下几行中使用的语法,除了它遵循一个似乎被称为三元运算符的基本结构。

string path = args == null || args.Length == 0 ?
    @"C:\GENERIC\SYSTEM\PATH" :
    args[1];

我对这种语法不熟悉。有人会帮助我把它翻译成真正的英语(或伪代码),就像if语句可以变成"如果这样那么"?

编辑:谢谢大家的答案,你们都非常乐于助人。不幸的是,我只能投票给你们其中一人,但我会投票给你们一群人!

8 个答案:

答案 0 :(得分:5)

这相当于

string path;
if(args == null || args.Length == 0)
    path = @"C:\GENERIC\SYSTEM\PATH" ;
else
    path = args[1];

您可以将三元运算符分解为此

VariableToStoreResult = BooleanCondition ? ValueIfConditionIsTrue : ValueIfConditionIsFalse

答案 1 :(得分:4)

您所看到的是一个特殊的条件运算符ternary operator。 (here是一个很好的教程)

它的用法如下:

condition ? first_expression : second_expression;

基本上如果语句为真,则执行第一个表达式,否则执行第二个表达式。一般来说,它是if/else块的一个小捷径,应该只用于小语句。嵌套三元运算符在很大程度上是不受欢迎的。

所以如果args == null || args.Length == 0 然后是path = @"C:\GENERIC\SYSTEM\PATH",如果不是,则等于args[1]

它等同于您的标准if

string path;
if(args == null || args.Length == 0)
{
   path = @"C:\GENERIC\SYSTEM\PATH";
}
else
{
   path = args[1];
}

答案 2 :(得分:1)

string path = "";

if(args==null || args.Length==0)
{
   path = @"C:\GENERIC\SYSTEM\PATH";
}
else
{
   path = args[1];
}

这是一个翻译。三元运算符看起来像:

result = (condition)?firstResult:otherResult

您的三元运营商意味着: 如果args为null或为空 - >使用默认路径|别的 - >使用args中的路径

答案 3 :(得分:1)

可以改写为:

string path;

if(args == null || args.Length == 0)
    path = @"C:\GENERIC\SYSTEM\PATH";
else
    path = args[1];

答案 4 :(得分:1)

基本上

如果args为null或args的长度为零    然后
   Path =“C:\ Generic \ System \ Path”
   否则
   Path = args [1]

答案 5 :(得分:1)

从高级到低级,这里是operators precedence;

==||?:=

基本上,你的代码等于;

string path;
if((args == null) || (args.Length == 0))
{
    path = @"C:\GENERIC\SYSTEM\PATH" ;
}
else
{
    path = args[1];
}

查看?: Operator (C# Reference)

  

条件运算符(?:)根据需要返回两个值中的一个   布尔表达式的值。以下是该语法   条件运算符。

condition ? first_expression : second_expression;

答案 6 :(得分:1)

就像Jon Skeet在评论中所说的那样,这个运算符被称为条件运算符。名称背后的原因是它非常像if语句。它通常被称为 三元运算符,因为它是目前唯一具有三个操作数的运算符。

现在,解释:

int myInt = myBool ? valueWhenTrue : valueWhenFalse;

这转化为:

int myInt;
if(myBool)
   myInt = valueWhenTrue;
else
   myInt = valueWhenFalse;

重要提示:条件运算符只能用于表达式(并且本身作为表达式计算),而不能用于语句。例如,这是无效的代码:

myBool ? DoSomething() : DoSomethingElse();

答案 7 :(得分:1)

结构非常基础

variable = value;

但现在该值取决于呈现真或假的条件;

variable = condition ? true : false;

条件可以是任何东西,甚至是返回此真或假状态的函数。

您在提交的示例中看到的是组合条件。

string path = args == null || args.Length == 0 ?
    @"C:\GENERIC\SYSTEM\PATH" :
    args[1];

如果“OR”中的一个语句为真,则条件呈现为真

阅读

string path = 

(if "args == null" is true)  OR (if "args.Length == 0" is true) then value = @"C:\GENERIC\SYSTEM\PATH" 
 else
(if both false) then  value = args[1]