当前位置:K88软件开发文章中心编程语言.NET.NET01 → 文章内容

C#中??运算符的使用方法

减小字体 增大字体 作者:佚名  来源:翔宇亭IT乐园  发布时间:2018-12-31 11:27:27

:2012-04-22 15:40:30

??是C#2.0中新增的一个运算符,可以认为是三元操作符?:的简版,其主要作用是如果 ?? 运算符的左操作数非空,该运算符将返回左操作数,否则返回右操作数。如果能较好地使用此操作符,将会得到意想不到的效果。

publicclass Program
{
  
class MyClass {}
   
  
static MyClass instance;
  
staticvoid Main()
   {
      
//如果instance == null,则做初始化 
     
      
//常规写法:
       if(instance ==null)
       {
          instance
=new MyClass();
       }
      
//使用??的写法:
       instance = instance ??new MyClass();
   }
}

也可以用于函数的返回值中:

publicclass Program
    {
       
publicstring Str1 { get; set; }
       
publicstring Str2 { get; set; }
       
publicstring Str3 { get; set; }
       
//如果Str1不为NULL返回Str1,否则Str2,以此类推
        publicoverridestring ToString()
        {
           
//if-else常规写法
              if (Str1 !=null)
            {
               
return Str1;
            }
           
elseif (Str2 !=null)
            {
               
return Str2;
            }
           
elseif (Str3 !=null)
            {
               
return Str3;
            }
           
else
            {
               
returnbase.ToString();
            }
           
//?:运算符写法
              return Str1 !=null? Str1 : (Str2 !=null? Str2 : (Str3 !=null? Str3 : base.ToString()));
           
//??运算符写法
             return Str1 ?? (Str2 ?? (Str3 ??base.ToString()));
        }
    }


C#中??运算符的使用方法