何が?とコロンの意味?
((OperationURL[1] == "GET") ? GetRequestSignature() : "")
次の文で...
string requestUri = _apiURL + "?e=" + OperationURL[0] + ((OperationURL[1] == "GET") ? GetRequestSignature() : "");
これは条件演算子式です。
(condition) ? [true path] : [false path];
例えば
string value = someBooleanExpression ? "Alpha" : "Beta";
したがって、ブール式がtrueの場合、値は「Alpha」を保持し、そうでない場合は「Beta」を保持します。
人々が陥る一般的な落とし穴については、 C#tag wiki の this question を参照してください。
三項 条件演算子 です。
?
の前の括弧内の条件が真の場合、:
の左側の値を返します。それ以外の場合は右側の値を返します。
指定した特定のケースでは、条件付き割り当てです。疑問符(?)の前の部分はブール条件であり、コロンの両側の部分(:)は、条件の結果に基づいて割り当てる値です(コロンの左側はtrue、rightの値です) sideはfalseの値です)。
これは「インライン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];
あなたの好み/上司が使用するように指示しているコードスタイルに応じて。
string requestUri = _apiURL + "?e=" + OperationURL[0] + ((OperationURL[1] == "GET") ? GetRequestSignature() : "");
以下に翻訳できます:
string requestUri="";
if ((OperationURL[1] == "GET")
{
requestUri = _apiURL + "?e=" + GetRequestSignature();
}
else
{
requestUri = _apiURL + "?e=";
}
「OperationURL [1]」が「GET」と評価された場合、「GetRequestSignature()」を返し、そうでない場合は「」を返します。ここで「GetRequestSignature()」が文字列を返すと推測しています。構文CONDITION? A:Bは基本的にif-elseを表し、CONDITIONがtrueの場合はAが返され、CONDITIONがfalseの場合はBが返されます。