int salesTeamId = person == null ? -1 : person.SalesTeam.Id;
私が一緒に作ることができるものから:
その後、私は失われています。どんな指導?
これは、 条件演算子 と呼ばれています。
条件演算子(?:)は三項演算子です(3つ オペランド)。条件付き演算子は次のように動作します:
- 最初のオペランドが暗黙的にboolに変換されます。それは評価され、 すべての副作用が完了してから続行します。
- 最初のオペランド true(1)と評価され、2番目のオペランドが評価されます。
- 最初の オペランドが偽(0)と評価された場合、3番目のオペランドが評価されます。
あなたの例は、このコードとほぼ同じです:
int salesTeamId;
if (person == null)
{
salesTeamId = -1;
}
else
{
salesTeamId = person.SalesTeam.Id;
}
これは
int salesTeamId;
if (person == null)
salesTeamId = -1;
else
salesTeamId = person.SalesTeam.Id;
Check ?: Operator (C#)
personがnullの場合、salesTeamIdには-1が割り当てられます。 personがnullの場合、salesTeamIdにはperson.SalesTeam.Idが割り当てられます。
3次演算子はif-then-else文で1行に埋め込まれています(通常は複数の行にまたがっていますが、それは幾分ポイントを破ります)。
それは、括弧を追加するためのものをクリアするかもしれません:
int salesTeamId = (person == null ? -1 : person.SalesTeam.Id);
次の擬似コードはまた役立ちます:
int salesTeamId = (IF person == null THEN USE -1 ELSE USE person.SalesTeam.Id );