int salesTeamId = person == null ? -1 : person.SalesTeam.Id;
从我可以拼凑:有人可以解释这行代码?
- INT SalesTeamId是一个变量,人被赋值给变量。
之后,我迷路了。任何指导?
int salesTeamId = person == null ? -1 : person.SalesTeam.Id;
从我可以拼凑:有人可以解释这行代码?
之后,我迷路了。任何指导?
这是一个三元声明。为了便于阅读,我将它翻译为if/else块。
int salesTeamId;
if(person == null)
{
salesTeamId = -1;
}
else
{
salesTeamId = person.SalesTeam.Id;
}
即the Ternary operator。这是速记if
声明等同于:
int salesTeamId;
if(person == null)
{
salesTeamId = -1;
}
else
{
salesTeamId = person.SalesTeam.Id;
}
如果人是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);
它的一个隐含的if语句(称为三元运算符)。
基本上它的检查是否为空,返回-1 else返回person.SalesTeam.id。然后将返回值直接分配给salesTeamId变量。
int salesTeamId;
if(person == null)
{
salesTeamId = -1;
}
else
{
salesTeamId = person.SalesTeam.Id
}
直接相当于
这相当于
int salesTeamId;
if (person == null)
salesTeamId = -1;
else
salesTeamId = person.SalesTeam.Id;
这意味着,
int salesTeamId;
if (person == null)
salesTeamId = -1;
else
salesTeamId = person.SalesTeam.Id;
这就是所谓的conditional operator。
条件运算符(?:)是一个三元运算符(它需要三个 操作数)。条件运算符的工作原理如下:
- 第一个操作数被隐式转换为bool。在继续之前评估并且完成所有副作用。
- 如果第一个操作数 的计算结果为真(1),则会计算第二个操作数。
- 如果第一个 操作数的计算结果为false(0),则会计算第三个操作数。
你举的例子是大致相当于此代码:
int salesTeamId;
if (person == null)
{
salesTeamId = -1;
}
else
{
salesTeamId = person.SalesTeam.Id;
}
@Dylan:感谢您指出错过.SalesTeam参考 – Akron