Le point d’interrogation et le côlon signifient-ils dans l’énoncé? Qu’est-ce que ça veut dire?

Que fait le ? et le côlon signifie?

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

Dans la déclaration suivante …

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

Ceci est l’expression de l’opérateur conditionnel.

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

Par exemple

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

Donc, si l’expression booléenne est vraie, la valeur contiendra “Alpha”, sinon elle contient “Bêta”.

Pour un écueil courant dans lequel les gens tombent, consultez cette question dans le wiki du tag C # .

C’est l’ opérateur conditionnel ternaire.

Si la condition entre parenthèses avant le ? est vrai, il renvoie la valeur à gauche du:, sinon la valeur à droite.

C’est un opérateur ternaire, ou une forme abrégée pour sinon.

condition? valeur si true: valeur si false

Voici un lien vers plus d’informations sur le sujet

edit: lien corrigé

Dans le cas particulier que vous avez fourni, il s’agit d’une affectation conditionnelle. La partie avant le point d’interrogation (?) Est une condition booléenne, et les parties des deux côtés du signe deux-points (:) sont les valeurs à atsortingbuer en fonction du résultat de la condition (le côté gauche est la valeur true, right side est la valeur pour false).

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

peut être traduit à:

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

Ceci est également connu sous le nom “inline if”, ou au-dessus de l’opérateur ternaire. https://en.wikipedia.org/wiki/%3F :

Il est utilisé pour réduire le code, bien qu’il ne soit pas recommandé d’en utiliser beaucoup sur une seule ligne, car cela peut rendre difficile le maintien du code. Imaginer:

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

et vous pourriez continuer pendant un certain temps.

Cela finit par se résumer à écrire:

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

Dans votre cas, “ssortingng requestUri = _apiURL +”? E = “+ OperationURL [0] + ((OperationURL [1] ==” GET “)? GetRequestSignature ():” “);”

Peut aussi être écrit comme suit: (en omettant le rest, puisque c’est une chaîne vide)

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

ou comme ça:

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

Selon vos préférences / le style de code que votre patron vous demande d’utiliser.

Cela signifie que si “OperationURL [1]” est évalué à “GET”, renvoyer “GetRequestSignature ()” sinon retourner “”. Je suppose que “GetRequestSignature ()” renvoie ici une chaîne. La syntaxe CONDITION? A: B représente fondamentalement un if-else où A est renvoyé lorsque CONDITION est vrai et B est retourné lorsque CONDITION est faux.