2011-08-05 16 views

Respuesta

82

Esta es la expresión operador condicional.

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

Por ejemplo

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

Así que si la expresión booleana es verdadera, tendrá valor "alfa", de lo contrario, se cumple "Beta".

Para una trampa común en la que las personas caen, vea this question en el C# tag wiki.

+1

value == someBooleanExpression –

+7

@YuZhang: no, es correcto. Ejemplo: valor de cadena = 1 == 2? "Alfa Beta"; -> value contendrá "Beta" –

13

Es el ternario conditional operator.

Si la condición en el paréntesis anterior al ? es verdadera, devuelve el valor a la izquierda del :, de lo contrario, el valor a la derecha.

1

En el caso particular que nos ha facilitado, se trata de 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).

1
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="; 
} 
0

Esto significa que si "OperationURL [1]" se evalúa como "GET" a continuación, volver "GetRequestSignature()" else retorno "". Supongo que "GetRequestSignature()" aquí devuelve una cadena. La sintaxis CONDITION? A: B significa básicamente un if-else donde A se devuelve cuando CONDITION es verdadero y B se devuelve cuando CONDITION es falso.

1

Esto también se conoce como "en línea si", o como se ve 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. Imagínese:

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

y se podía ir en un rato.

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, "cadena RequestURI = _apiURL + "e =" + OperationURL [0] + ((OperationURL [1] =="? GET ")? GetRequestSignature():" ");"

también se puede escribir como: (omitiendo la persona, ya que es una cadena vacía)

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

o como esto:

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

Dependiendo de su preferencia/el estilo de código de su jefe dice a usar

Cuestiones relacionadas