web-dev-qa-db-ja.com

ステートメント内の疑問符とコロンの意味?どういう意味ですか?

何が?とコロンの意味?

 ((OperationURL[1] == "GET") ? GetRequestSignature() : "")

次の文で...

string requestUri = _apiURL + "?e=" + OperationURL[0] + ((OperationURL[1] == "GET") ? GetRequestSignature() : "");
63
001

これは条件演算子式です。

(condition) ? [true path] : [false path];

例えば

 string value = someBooleanExpression ? "Alpha" : "Beta";

したがって、ブール式がtrueの場合、値は「Alpha」を保持し、そうでない場合は「Beta」を保持します。

人々が陥る一般的な落とし穴については、 C#tag wikithis question を参照してください。

98
Anthony Pegram

三項 条件演算子 です。

?の前の括弧内の条件が真の場合、:の左側の値を返します。それ以外の場合は右側の値を返します。

14
Oded

これは三項演算子、またはif elseの短縮形です。

条件? trueの場合の値:falseの場合の値

この件に関する詳細情報へのリンクです

編集:リンクが修正されました

7
Spooks

指定した特定のケースでは、条件付き割り当てです。疑問符(?)の前の部分はブール条件であり、コロンの両側の部分(:)は、条件の結果に基づいて割り当てる値です(コロンの左側はtrue、rightの値です) sideはfalseの値です)。

1
Anthony Grist

これは「インラインif」、または三項演算子の上とも呼ばれます。 https://en.wikipedia.org/wiki/%3F

コードを削減するために使用されますが、コードの維持が非常に困難になる可能性があるため、これらの多くを1行で使用することはお勧めしません。想像してみてください:

a = b?c:(d?e:(f?g:h));

しばらく続けることができます。

最終的には次のように書くことになります。

if(b)
  a = c;
else if(d)
  a = e;
else if(f)
  a = g;
else
  a = h;

あなたの場合、「string requestUri = _apiURL + "?e =" + OperationURL [0] +((OperationURL [1] == "GET")?GetRequestSignature(): ""); "

次のように書くこともできます:(空の文字列なので、elseを省略します)

string requestUri = _apiURL + "?e=" + OperationURL[0];
if((OperationURL[1] == "GET")
    requestUri = requestUri + GetRequestSignature();

またはこのように:

string requestUri;
if((OperationURL[1] == "GET")
    requestUri = _apiURL + "?e=" + OperationURL[0] + GetRequestSignature();
else
    requestUri = _apiURL + "?e=" + OperationURL[0];

あなたの好み/上司が使用するように指示しているコードスタイルに応じて。

1
T.S
string requestUri = _apiURL + "?e=" + OperationURL[0] + ((OperationURL[1] == "GET") ? GetRequestSignature() : "");

以下に翻訳できます:

string requestUri="";
if ((OperationURL[1] == "GET")
{
    requestUri = _apiURL + "?e=" + GetRequestSignature();
}
else
{
   requestUri = _apiURL + "?e=";
}
1
Kimtho6

「OperationURL [1]」が「GET」と評価された場合、「GetRequestSignature()」を返し、そうでない場合は「」を返します。ここで「GetRequestSignature()」が文字列を返すと推測しています。構文CONDITION? A:Bは基本的にif-elseを表し、CONDITIONがtrueの場合はAが返され、CONDITIONがfalseの場合はBが返されます。

0
mtijn