Подтвердить что ты не робот

Знак вопроса и двоеточие означают в заявлении? что это значит?

Что делает? и двоеточие означает?

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

В следующем утверждении...

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

Ответ 1

Это условное выражение оператора.

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

Например

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

Итак, если логическое выражение истинно, значение будет содержать "Альфа", в противном случае оно содержит "Бета".

Для общей ошибки, с которой люди попадают, см. этот вопрос в виките тегов С#.

Ответ 2

Это тернарный условный оператор.

Если условие в скобках перед ? истинно, оно возвращает значение слева от :, в противном случае значение справа.

Ответ 4

В конкретном случае, который вы предоставили, это условное присвоение. Часть перед вопросительным знаком (?) Является логическим условием, а части с обеих сторон двоеточия (:) - это значения, назначаемые на основе результата условия (левая часть двоеточия - значение для true, right side - значение для false).

Ответ 5

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

можно перевести на:

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

Ответ 6

Это также известно как "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];

В зависимости от вашего предпочтения/стиля кода ваш босс говорит вам использовать.

Ответ 7

Это означает, что "OperationURL [1]" оценивает значение "GET", а затем возвращает "GetRequestSignature()" else return "". Я предполагаю, что "GetRequestSignature()" здесь возвращает строку. Синтаксис CONDITION? A: B в основном означает if-else, где A возвращается, когда CONDITION истинно, а B возвращается, когда CONDITION является ложным.