¿Signo de interrogación y dos puntos en la statement? ¿Qué significa eso?

Lo que hace el ? y el colon significa?

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

En la siguiente statement …

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

Esta es la expresión de operador condicional.

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

Por ejemplo

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

Entonces, si la expresión booleana es verdadera, el valor mantendrá “Alpha”, de lo contrario, contiene “Beta”.

Para un error común en el que las personas caen, vea esta pregunta en la wiki de la etiqueta C # .

Es el operador condicional ternario.

Si la condición en el paréntesis antes de la ? es verdadero, devuelve el valor a la izquierda de:; de lo contrario, el valor a la derecha.

Es un operador ternario, o una forma corta para otra persona.

condición? valor si es verdadero: valor si es falso

Aquí hay un enlace para obtener más información sobre el tema

editar: enlace fijo

En el caso particular que proporcionó, es una asignación condicional. La parte anterior al signo de interrogación (?) Es una condición booleana, y las partes a ambos lados del colon (:) son los valores que se asignarán en función del resultado de la condición (el lado izquierdo de los dos puntos es el valor verdadero, derecho lado es el valor para falso).

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

se puede traducir a:

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

Esto también se conoce como “en línea si”, o como arriba del operador ternario. https://en.wikipedia.org/wiki/%3F :

Se usa para reducir el código, aunque no se recomienda usar muchos de estos en una sola línea, ya que puede dificultar el mantenimiento del código. Imagina:

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

y podrías continuar un tiempo.

Termina básicamente lo mismo que escribir:

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

En su caso, “string requestUri = _apiURL +”? E = “+ OperationURL [0] + ((OperationURL [1] ==” GET “)? GetRequestSignature ():” “);”

También se puede escribir como: (omitiendo el else, ya que es una cadena vacía)

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

o así:

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

Según su preferencia / el estilo de código que su jefe le indique que use.

Significa que si “OperationURL [1]” se evalúa como “GET” y luego devuelve “GetRequestSignature ()” else return “”. Supongo que “GetRequestSignature ()” aquí devuelve una cadena. La syntax CONDITION? A: B básicamente representa un if-else donde A se devuelve cuando CONDITION es verdadero y B se devuelve cuando CONDITION es falso.