C#Tip--巧みに使う??演算子

9882 ワード

?? MSDN注記:
 
もし?演算子の左オペランドは空ではありません.この演算子は左オペランドを返します.そうしないと、右オペランドを返します.
C#2.0に新たに追加された演算子としては、実際にはあまり使われていませんが、うまく運用できれば、思いがけない効果が得られます
例1、オブジェクトの初期化

      
        
public class Program
{
class MyClass {}

static MyClass instance;
static void Main()
{
// instance == null,

// :
if (instance == null )
{
instance
= new MyClass();
}
// ?? :
instance = instance ?? new MyClass();
}
}

 
 
例2、関数は値を返します
 

      
        
public class Program
{
public string Str1 { get ; set ; }
public string Str2 { get ; set ; }
public string Str3 { get ; set ; }
// Str1 NULL Str1, Str2,
public override string ToString()
{
// if-else
if (Str1 != null )
{
return Str1;
}
else if (Str2 != null )
{
return Str2;
}
else if (Str3 != null )
{
return Str3;
}
else
{
return base .ToString();
}
// ?:
return Str1 != null ? Str1 : (Str2 != null ? Str2 : (Str3 != null ? Str3 : base .ToString()));
// ??
return Str1 ?? (Str2 ?? (Str3 ?? base .ToString()));
}
}

 
これは2つの簡単な例にすぎず、具体的な応用は実際の場面に基づいて1、3を挙げなければならない.