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

C# 有人能用简单的英语或伪代码解释三元运算符吗?,c#,syntax,ternary-operator,conditional-operator,C#,Syntax,Ternary Operator,Conditional Operator,我不理解下面几行中使用的语法,只是它遵循一个基本结构,似乎被称为三元运算符 string path = args == null || args.Length == 0 ? @"C:\GENERIC\SYSTEM\PATH" : args[1]; 我不熟悉这种语法。有没有人能帮我把它翻译成真正的英语(或伪代码),就像if语句可以转换成“if this then that”一样 编辑:谢谢大家的回答,你们都帮了大忙。不幸的是,我只能投你们中的一个,但我会投你们中的一大群 stri

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

string path = args == null || args.Length == 0 ?
    @"C:\GENERIC\SYSTEM\PATH" :
    args[1];
我不熟悉这种语法。有没有人能帮我把它翻译成真正的英语(或伪代码),就像if语句可以转换成“if this then that”一样

编辑:谢谢大家的回答,你们都帮了大忙。不幸的是,我只能投你们中的一个,但我会投你们中的一大群

string path = "";

if(args==null || args.Length==0)
{
   path = @"C:\GENERIC\SYSTEM\PATH";
}
else
{
   path = args[1];
}
这是一个翻译。三元运算符看起来像:

result=(条件)?firstResult:otherResult

您的三元运算符表示: 如果参数为null或空->使用默认路径| else->使用参数中的路径

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

result=(条件)?firstResult:otherResult

您的三元运算符表示: 如果args为null或空->使用默认路径| else->使用args中的路径

这相当于

string path;
if(args == null || args.Length == 0)
    path = @"C:\GENERIC\SYSTEM\PATH" ;
else
    path = args[1];
可以将三元运算符分解为

VariableToStoreResult = BooleanCondition ? ValueIfConditionIsTrue : ValueIfConditionIsFalse
这相当于

string path;
if(args == null || args.Length == 0)
    path = @"C:\GENERIC\SYSTEM\PATH" ;
else
    path = args[1];
可以将三元运算符分解为

VariableToStoreResult = BooleanCondition ? ValueIfConditionIsTrue : ValueIfConditionIsFalse

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

它是这样使用的:

condition ? first_expression : second_expression;
基本上,如果该语句为true,则执行第一个表达式,否则执行第二个表达式。一般来说,它是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];
}

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

它是这样使用的:

condition ? first_expression : second_expression;
基本上,如果该语句为true,则执行第一个表达式,否则执行第二个表达式。一般来说,它是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];
}

它可以重写为:

string path;

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

它可以重写为:

string path;

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

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

基本上

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

Path=args[1]

从高级别到低级别,这里是

=
|
=

所以基本上,你的代码等于

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

条件运算符(?:)返回两个值之一,具体取决于 布尔表达式的值。下面是 条件运算符

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

从高层次到低层次,在这里

=
|
=

因此,基本上,您的代码等于

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

条件运算符(?:)返回两个值之一,具体取决于 布尔表达式的值。下面是 条件运算符

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

正如Jon Skeet在评论中所说,这个操作符被称为条件操作符。is name背后的原因是它的工作原理非常类似于if语句。它通常被称为三值运算符,因为它是目前唯一具有三个操作数的运算符

现在,解释如下:

int myInt = myBool ? valueWhenTrue : valueWhenFalse;
这可以理解为:

int myInt;
if(myBool)
   myInt = valueWhenTrue;
else
   myInt = valueWhenFalse;
重要注意事项:条件运算符只能用于表达式(本身作为表达式计算),不能用于语句。例如,这是无效代码:

myBool ? DoSomething() : DoSomethingElse();

正如Jon Skeet在评论中所说,这个操作符被称为条件操作符。is name背后的原因是它的工作原理非常类似于if语句。它通常被称为三值运算符,因为它是目前唯一具有三个操作数的运算符

现在,解释如下:

int myInt = myBool ? valueWhenTrue : valueWhenFalse;
这可以理解为:

int myInt;
if(myBool)
   myInt = valueWhenTrue;
else
   myInt = valueWhenFalse;
重要注意事项:条件运算符只能用于表达式(本身作为表达式计算),不能用于语句。例如,这是无效代码:

myBool ? DoSomething() : DoSomethingElse();

结构相当基本

variable = value;
但是现在这个值取决于一个条件,这个条件表示真或假

variable = condition ? true : false;
条件可以是任何东西,甚至是返回此true或false状态的函数

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

string path = args == null || args.Length == 0 ?
    @"C:\GENERIC\SYSTEM\PATH" :
    args[1];
这里,如果“OR”中的一条语句为true,则条件为true

阅读


结构相当基本

variable = value;
但是现在这个值取决于一个条件,这个条件表示真或假

variable = condition ? true : false;
条件可以是任何东西,甚至是返回此true或false状态的函数

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

string path = args == null || args.Length == 0 ?
    @"C:\GENERIC\SYSTEM\PATH" :
    args[1];
这里,如果“OR”中的一条语句为true,则条件为true

阅读


不相关,但如果
args
是长度正好为1项的数组/集合,则此代码将失败。请注意,此运算符的名称是条件运算符。这是一个三值运算符,因为它有三个操作数,而目前它是唯一一个这样的运算符。。。但这就是术语“三元”在这里的全部含义。@JonSkeet因为它是唯一的一个,所以通常被称为三元运算符,每个人都理解它。这个术语比条件运算符更为常见,尽管精度较低。@Barmar:如果引入了第二个三元运算符,则所有将其称为“三元运算符”的人都需要更改,尽管