2011-10-27 159 views
6
int salesTeamId = person == null ? -1 : person.SalesTeam.Id; 

从我可以拼凑:有人可以解释这行代码?

  1. INT SalesTeamId是一个变量,人被赋值给变量。

之后,我迷路了。任何指导?

回答

12

这是一个三元声明。为了便于阅读,我将它翻译为if/else块。

int salesTeamId; 

if(person == null) 
{ 
    salesTeamId = -1; 
} 
else 
{ 
    salesTeamId = person.SalesTeam.Id; 
} 
+0

@Dylan:感谢您指出错过.SalesTeam参考 – Akron

8

the Ternary operator。这是速记if声明等同于:

int salesTeamId; 
if(person == null) 
{ 
    salesTeamId = -1; 
} 
else 
{ 
    salesTeamId = person.SalesTeam.Id; 
} 
1

如果人是null,则salesTeamId分配-1。 如果person为null,则salesTeamId被分配person.SalesTeam.Id。

三级操作符是嵌入到一行中的if-then-else语句(通常它可以分布在多行中,但会在某种程度上失败)。

可能澄清一些事情,以添加一些括号:

int salesTeamId = (person == null ? -1 : person.SalesTeam.Id); 

下面的伪代码也可以帮助:

int salesTeamId = (IF person == null THEN USE -1 ELSE USE person.SalesTeam.Id); 
2

它的一个隐含的if语句(称为三元运算符)。

基本上它的检查是否为空,返回-1 else返回person.SalesTeam.id。然后将返回值直接分配给salesTeamId变量。

int salesTeamId; 
if(person == null) 
{ 
salesTeamId = -1; 
} 
else 
{ 
salesTeamId = person.SalesTeam.Id 
} 

直接相当于

2

这相当于

int salesTeamId; 
if (person == null) 
    salesTeamId = -1; 
else 
    salesTeamId = person.SalesTeam.Id; 

检查?: Operator (C#)

4

这意味着,

int salesTeamId; 

if (person == null) 
    salesTeamId = -1; 
else 
    salesTeamId = person.SalesTeam.Id; 
3

这就是所谓的conditional operator

条件运算符(?:)是一个三元运算符(它需要三个 操作数)。条件运算符的工作原理如下:

  • 第一个操作数被隐式转换为bool。在继续之前评估并且完成所有副作用。
  • 如果第一个操作数 的计算结果为真(1),则会计算第二个操作数。
  • 如果第一个 操作数的计算结果为false(0),则会计算第三个操作数。

你举的例子是大致相当于此代码:

int salesTeamId; 
if (person == null) 
{ 
    salesTeamId = -1; 
} 
else 
{ 
    salesTeamId = person.SalesTeam.Id; 
} 
相关问题