int salesTeamId = person == null ? -1 : person.SalesTeam.Id;
我可以拼凑起来:
之后我迷路了。任何指导?
答案 0 :(得分:12)
这是一份三元声明。为了便于阅读,我把它翻译成了一个if / else块。
int salesTeamId;
if(person == null)
{
salesTeamId = -1;
}
else
{
salesTeamId = person.SalesTeam.Id;
}
答案 1 :(得分:8)
那是the Ternary operator。它是一个简写if
语句,相当于:
int salesTeamId;
if( person == null )
{
salesTeamId = -1;
}
else
{
salesTeamId = person.SalesTeam.Id;
}
答案 2 :(得分:4)
这意味着,
int salesTeamId;
if (person == null)
salesTeamId = -1;
else
salesTeamId = person.SalesTeam.Id;
答案 3 :(得分:3)
它被称为conditional operator。
条件运算符(?:)是三元运算符(需要三个运算符) 操作数)。条件运算符的工作原理如下:
- 第一个操作数被隐式转换为bool。它被评估和 所有副作用都在继续之前完成。
- 如果是第一个操作数 计算结果为true(1),计算第二个操作数。
- 如果是第一个 操作数计算结果为false(0),计算第三个操作数。
您的示例大致相当于此代码:
int salesTeamId;
if (person == null)
{
salesTeamId = -1;
}
else
{
salesTeamId = person.SalesTeam.Id;
}
答案 4 :(得分:2)
它是一个隐含的if语句(称为三元运算符)。
基本上它检查person是否为null,返回-1 else返回person.SalesTeam.id。然后将返回值直接分配给salesTeamId变量。
int salesTeamId;
if(person == null)
{
salesTeamId = -1;
}
else
{
salesTeamId = person.SalesTeam.Id
}
直接等效
答案 5 :(得分:2)
这相当于
int salesTeamId;
if (person == null)
salesTeamId = -1;
else
salesTeamId = person.SalesTeam.Id;
答案 6 :(得分:1)
如果person为null,则为salesTeamId分配-1。 如果person为null 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 );