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