読者です 読者をやめる 読者になる 読者になる

C#でNullを判定できる??演算子(NVL的なもの)

ASP.NET MVCのテンプレートが生成したコードに、

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

というコードがありました。

??演算子はNullを判断できる演算子で、この場合

  • formsAuthがNullだったら、FormsAuthenticationServiceをNewしてFormsAuthに代入
  • formsAuthがNullではなかったら、formsAuthをそのままFormsAuthに代入

という動きになります。OracleのNVL関数、T-SQLのISNULL関数みたいなものです。VBには対応する演算子はありません。

これまで、3項演算子(条件 ? TRUEの時の値 : FALSEの時の値)を使うことが多かったのですが、Null判定(x == nullやx.HasValue)は??演算子(null合体演算子)を使ったほうがシンプルかと思いました。