Что делает? и двоеточие означает?
((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";
Итак, если логическое выражение истинно, значение будет содержать "Альфа", в противном случае оно содержит "Бета".
Для общей ошибки, с которой люди попадают, см. этот вопрос в виките тегов С#.
Это тернарный условный оператор.
Если условие в скобках перед ?
истинно, оно возвращает значение слева от :
, в противном случае значение справа.
Это тернарный оператор или короткая форма для if else.
условие? значение if true: значение, если false
Вот ссылка на дополнительную информацию по теме
Изменить: ссылка исправлена
В конкретном случае, который вы предоставили, это условное присвоение. Часть перед вопросительным знаком (?) Является логическим условием, а части с обеих сторон двоеточия (:) - это значения, назначаемые на основе результата условия (левая часть двоеточия - значение для true, right side - значение для false).
string requestUri = _apiURL + "?e=" + OperationURL[0] + ((OperationURL[1] == "GET") ? GetRequestSignature() : "");
можно перевести на:
string requestUri="";
if ((OperationURL[1] == "GET")
{
requestUri = _apiURL + "?e=" + GetRequestSignature();
}
else
{
requestUri = _apiURL + "?e=";
}
Это также известно как "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;
В вашем случае "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];
В зависимости от вашего предпочтения/стиля кода ваш босс говорит вам использовать.
Это означает, что "OperationURL [1]" оценивает значение "GET", а затем возвращает "GetRequestSignature()" else return "". Я предполагаю, что "GetRequestSignature()" здесь возвращает строку. Синтаксис CONDITION? A: B в основном означает if-else, где A возвращается, когда CONDITION истинно, а B возвращается, когда CONDITION является ложным.