Birisi bu kod satırını yorumlayabilir mi?

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

Birlikte ne parçalayabildiğimden:

  1. int SalesTeamId bir değişkendir ve değişkene kişi atanır.

Bundan sonra kayboldum. Herhangi bir rehberlik?

6

7 cevap

Bu üçlü bir ifadedir. Okunabilirlik için bir if/else bloğuna çevirdim.

int salesTeamId;

if(person == null)
{
   salesTeamId = -1;
}
else
{
   salesTeamId = person.SalesTeam.Id;
}
12
katma
@Dylan: Cevapsız .SalesTeam referansını işaretlediğiniz için teşekkür ederiz
katma yazar Akron, kaynak

Bu, Üçlü operatördür . Aşağıdakilere eşdeğer bir if ifadesidir:

int salesTeamId;
if( person == null )
{
    salesTeamId = -1;
}
else
{
    salesTeamId = person.SalesTeam.Id;
}
8
katma

Anlamı,

int salesTeamId;

if (person == null) 
   salesTeamId = -1;
 else 
   salesTeamId = person.SalesTeam.Id;
4
katma

Buna koşullu operatör denir.

Koşul operatörü (? :) üçlü operatördür (üç alır   işlenen). Koşullu operatör aşağıdaki gibi çalışır:

     
      
  • İlk işlenen, örtülü olarak boole dönüştürülür. Değerlendirilir ve   Devam etmeden önce tüm yan etkiler tamamlandı.
  •   
  • İlk işlenen ise   doğru olarak değerlendirir (1), ikinci işlenen değerlendirilir.
  •   
  • İlk   işlenen, false (0) olarak değerlendirir, üçüncü işlenen değerlendirilir.
  •   

Örneğiniz kabaca bu koda eşittir:

int salesTeamId;
if (person == null)
{
   salesTeamId = -1;
}
else
{
   salesTeamId = person.SalesTeam.Id;
}
3
katma

Onun bir örtülü if ifadesi (üçlü bir operatör olarak adlandırılır).

Temel olarak, kişinin boş olup olmadığını kontrol etmesi, -1 değerini döndürür. Person.SalesTeam.id. Dönüş değeri daha sonra doğrudan salesTeamId değişkenine atanır.

int salesTeamId;
if(person == null)
{
salesTeamId = -1;
}
else
{
salesTeamId = person.SalesTeam.Id
}

doğrudan eşdeğerdir

2
katma

Bu eşdeğerdir

int salesTeamId;
if (person == null)
    salesTeamId = -1;
else
    salesTeamId = person.SalesTeam.Id;

Check ?: Operator (C#)

2
katma

Kişi boşsa, salesTeamId -1 atanır. Kişi boşsa, salesTeamId kişiye atanır.SalesTeam.Id.

Üçüncül operatör, bir satır üzerine yerleştirilmiş bir if-then-else deyimidir (genellikle! Birden çok satıra yayılabilir, ancak bu noktayı biraz bozar).

Bazı parantez eklemek için bazı şeyleri temizleyebilir:

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

Aşağıdaki sözde kod da yardımcı olabilir:

int salesTeamId = (IF person == null THEN USE -1 ELSE USE person.SalesTeam.Id );
1
katma