de-vraag
  • 質問
  • タグ
  • ユーザー
通知:
報酬:
登録
登録すると、質問に対する返答やコメントが通知されます。
ログイン
すでにアカウントをお持ちの方は、ログインして新しい通知を確認してください。
追加された質問、回答、コメントには報酬があります。
さらに
ソース
編集
 MissioDei
MissioDei
質問

誰かがこのコード行を解釈できますか?

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

私が一緒に作ることができるものから:

  1. int SalesTeamIdは変数で、personが変数に割り当てられています。

その後、私は失われています。どんな指導?

6 2011-10-27T22:14:00+00:00 7
 p.campbell
p.campbell
編集された質問 27日 10月 2011 в 10:17
プログラミング
c#
Akron
27日 10月 2011 в 10:16
2011-10-27T22:16:03+00:00
さらに
ソース
編集
#56793551

これは3つのステートメントです。私は可読性のためにそれをif/elseブロックに翻訳しました。

int salesTeamId;

if(person == null)
{
   salesTeamId = -1;
}
else
{
   salesTeamId = person.SalesTeam.Id;
}
12
0
Ed S.
27日 10月 2011 в 10:15
2011-10-27T22:15:28+00:00
さらに
ソース
編集
#56793548

これは三項演算子です。 if 文は、次のものと同等の略語です。

int salesTeamId;
if( person == null )
{
    salesTeamId = -1;
}
else
{
    salesTeamId = person.SalesTeam.Id;
}
8
0
Racooon
27日 10月 2011 в 10:16
2011-10-27T22:16:31+00:00
さらに
ソース
編集
#56793553

その意味は、

int salesTeamId;

if (person == null) 
   salesTeamId = -1;
 else 
   salesTeamId = person.SalesTeam.Id;
4
0
Mark Byers
27日 10月 2011 в 10:16
2011-10-27T22:16:47+00:00
さらに
ソース
編集
#56793554

これは、 条件演算子 と呼ばれています。

条件演算子(?:)は三項演算子です(3つ   オペランド)。条件付き演算子は次のように動作します:

     
      
  • 最初のオペランドが暗黙的にboolに変換されます。それは評価され、   すべての副作用が完了してから続行します。
  •   
  • 最初のオペランド   true(1)と評価され、2番目のオペランドが評価されます。
  •   
  • 最初の   オペランドが偽(0)と評価された場合、3番目のオペランドが評価されます。
  •   

あなたの例は、このコードとほぼ同じです:

int salesTeamId;
if (person == null)
{
   salesTeamId = -1;
}
else
{
   salesTeamId = person.SalesTeam.Id;
}
3
0
richzilla
27日 10月 2011 в 10:16
2011-10-27T22:16:01+00:00
さらに
ソース
編集
#56793550

その暗黙のif文(三項演算子と呼ばれます)。

基本的に、personがnullの場合は-1を返し、それ以外の場合はperson.SalesTeam.idを返します。戻り値は、salesTeamId変数に直接割り当てられます。

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

直接的に同等です

2
0
Nikola Radosavljević
27日 10月 2011 в 10:16
2011-10-27T22:16:28+00:00
さらに
ソース
編集
#56793552

これは

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

Check ?: Operator (C#)

2
0
Charlie Kilian
27日 10月 2011 в 10:15
2011-10-27T22:15:53+00:00
さらに
ソース
編集
#56793549

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 );
1
0
質問の追加
カテゴリ
すべて
技術情報
文化・レクリエーション
生活・芸術
科学
プロフェッショナル
事業内容
ユーザー
すべて
新しい
人気
1
Roxana Elizabeth CASTILLO Avalos
登録済み 17時間前
2
Hideo Nakagawa
登録済み 1日前
3
Sergiy Tytarenko
登録済み 3日前
4
shoxrux azadov
登録済み 5日前
5
Koreets Koreytsev
登録済み 1週間前
© de-vraag :年
ソース
stackoverflow.com
ライセンス cc by-sa 3.0 帰属