2011-10-27 206 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; 
} 
相關問題