Que signifie?

Je regarde le code généré par ASP.NET MVC 1.0, et je me demandais; que signifient les points d’interrogation doubles?

// This constructor is not used by the MVC framework but is instead provided for ease // of unit testing this type. See the comments at the end of this file for more // information. public AccountController(IFormsAuthentication formsAuth, IMembershipService service) { FormsAuth = formsAuth ?? new FormsAuthenticationService(); MembershipService = service ?? new AccountMembershipService(); } 

En relation:

?? Opérateur de coalescence nul -> Que signifie coalescent?

C’est l’ opérateur à coalescence nulle . Il retournera la valeur à sa gauche si cette valeur n’est pas nulle, sinon la valeur à droite (même si elle est nulle). Ils sont souvent enchaînés et se terminent par une valeur par défaut.

Consultez cet article pour plus d’informations.

Cela signifie la même chose que

 If (formsAuth != null) FormsAuth = formsAuth; else FormsAuth = FormsAuthenticationService(); 

c’est l’ opérateur nul coalescent

À partir de MSDN

Le ?? L’opérateur est appelé opérateur de coalescence nulle et sert à définir une valeur par défaut pour une valeur nullable ainsi que des types de référence. Il retourne l’opérande de gauche s’il n’est pas nul; sinon, il retourne l’opérande correct.

Un type nullable peut contenir une valeur ou il peut être indéfini. Le ?? L’opérateur définit la valeur par défaut à renvoyer lorsqu’un type nullable est affecté à un type non nullable. Si vous essayez d’affecter un type de valeur nullable à un type de valeur non nullable sans utiliser le paramètre ?? opérateur, vous allez générer une erreur de compilation. Si vous utilisez un transtypage et que le type de valeur nullable est actuellement indéfini, une exception InvalidOperationException sera levée.

Pour plus d’informations, consultez Types nullables (Guide de programmation C #).

Le résultat d’un ?? L’opérateur n’est pas considéré comme une constante même si ses deux arguments sont des constantes.

C’est l’opérateur de coalescence nul. Si la valeur à gauche est nulle, la valeur à droite sera renvoyée.

Si formsAuth est null, il renvoie la valeur à droite (new FormsAuthenticationService ()).

Cela signifie: renvoyer la première valeur (par exemple, “formsAuth”) s’il ne s’agit pas de la valeur NULL ou la deuxième valeur (new FormsAuthenticationService ()):

Marc