這是什麼?和冒號意思是?語句中的問號和冒號是什麼意思?這是什麼意思?
((OperationURL[1] == "GET") ? GetRequestSignature() : "")
在下面的語句...
string requestUri = _apiURL + "?e=" + OperationURL[0] + ((OperationURL[1] == "GET") ? GetRequestSignature() : "");
這是什麼?和冒號意思是?語句中的問號和冒號是什麼意思?這是什麼意思?
((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,值將舉行 「阿爾法」,否則,它擁有 「測試版」。
對於人們常見的陷阱,請參閱this question中的C# tag wiki。
這是三元conditional operator。
如果?
之前括號內的條件爲真,則會將值返回到:
的左側,否則將值返回到右側。
@ z-boss謝謝,現在修復 – Spooks
在您所提供的特定情況下,這是一個有條件分配。問號(?)前面的部分是一個布爾條件,冒號(:)兩邊的部分是根據條件結果賦值的值(冒號的左邊是true的值,右一邊是虛假的價值)。
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?答:B 基本上代表了一個if-else,其中當CONDITION爲真時返回A,而當CONDITION爲假時返回B.
這也被稱爲「inline if」,或者如上面的三元運算符。 https://en.wikipedia.org/wiki/%3F:
它被用來減少代碼,但不建議在一行中使用很多這些代碼,因爲它可能會使維護代碼變得非常困難。 試想:
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;
在你的情況, 「串requestUri = _apiURL + 」E =「 + OperationURL [0] +((OperationURL [1] ==」? GET「)?GetRequestSignature():」「);」
也可以寫爲:(省略的東西,因爲它是一個空字符串)
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];
根據您的喜好/代碼風格你的老闆告訴你使用。
value == someBooleanExpression –
@YuZhang:不,它是正確的。例如: string value = 1 == 2? 「Alpha」:「Beta」; - >價值將持有「測試版」 –