Можа хто-то інтэрпрэтаваць гэты радок кода?

int salesTeamId = person == null ? -1 : person.SalesTeam.Id;

З таго, што я магу кавалачкі:

  1. INT SalesTeamId з'яўляецца зменнай і чалавек быць прысвоена зменнай.

Пасля гэтага я страчаны. Любое кіраўніцтва?

6

7 адказы

Гэта патройнае заяву. Я перавёў яго ў калі/іншае блок для вас для зручнасці чытання.

int salesTeamId;

if(person == null)
{
   salesTeamId = -1;
}
else
{
   salesTeamId = person.SalesTeam.Id;
}
12
дададзена
@Dylan: Дзякуй за ўказанне на прапушчанае .SalesTeam спасылкі
дададзена аўтар Akron, крыніца

Гэта значыць аператар трынітарнага . Гэта скарочаная , калі зацвярджэнне эквівалентна:

int salesTeamId;
if( person == null )
{
    salesTeamId = -1;
}
else
{
    salesTeamId = person.SalesTeam.Id;
}
8
дададзена

Гэта значыць,

int salesTeamId;

if (person == null) 
   salesTeamId = -1;
 else 
   salesTeamId = person.SalesTeam.Id;
4
дададзена

Гэта называецца ўмоўны аператар .

<Р> Умоўны аператар (? :) з'яўляецца патройны аператар (ён прымае тры   аперанды). Ўмоўны аператар працуе наступным чынам:

     
      
  • Першы аперанд няяўна пераўтворыцца ў трэці. ацэньваецца і   ўсе пабочныя эфекты будуць завершаны, перш чым працягнуць.
  •   
  • Калі першы аперанд   ацэньваецца як ісціна (1), другі аперанд.
  •   
  • Калі першы   аперанд прымае значэнне хлусня (0), трэці аперанд.
  •   

Ваш прыклад прыкладна адпавядае гэтаму коду:

int salesTeamId;
if (person == null)
{
   salesTeamId = -1;
}
else
{
   salesTeamId = person.SalesTeam.Id;
}
3
дададзена

Яго невідавочнае, калі аператар (так званы патройны аператар).

У асноўным яго праверка, калі чалавек мае нулявое значэнне, вярнуць -1 яшчэ вярнуць 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;

Check ?: Operator (C#)

2
дададзена

Калі чалавек мае нулявое значэнне, то salesTeamId прысвойваецца -1. Калі чалавек Null Null, то salesTeamId прызначаецца person.SalesTeam.Id.

Троесны аператар з'яўляецца, калі-то-інакш аператар ўбудаваны ў адзін радок (звычайна! Ён можа распаўсюджвацца на некалькі радкоў, але перамагае кропка некалькі).

Гэта можа прыбраць рэчы, каб дадаць некаторыя дужкі:

int salesTeamId = (person == null ? -1 : person.SalesTeam.Id);

Наступны псевдокод можа таксама дапамагчы:

int salesTeamId = (IF person == null THEN USE -1 ELSE USE person.SalesTeam.Id );
1
дададзена