Asp.net MVC中的"??"

最近在看Asp.net MVC時,遇到了這麼一段代碼

 

 

public AccountController(IFormsAuthentication formsAuth, IMembershipService service)
{
   
FormsAuth = formsAuth ?? new FormsAuthenticationService();
   
MembershipService = service ?? new AccountMembershipService();
}

FormsAuth = formsAuth ?? new FormsAuthenticationService();
該代碼的語義是

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

對“??”MSDN上的解釋是:

The ?? operator is called the null-coalescing operator and is used to define a default value for a nullable value types as well as reference types. It returns the left-hand operand if it is not null; otherwise it returns the right operand.

A nullable type can contain a value, or it can be undefined. The ?? operator defines the default value to be returned when a nullable type is assigned to a non-nullable type. If you try to assign a nullable value type to a non-nullable value type without using the ?? operator, you will generate a compile-time error. If you use a cast, and the nullable value type is currently undefined, an InvalidOperationException exception will be thrown.

For more information, see Nullable Types (C# Programming Guide).

The result of a ?? operator is not considered to be a constant even if both its arguments are constants.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章