??是C#2.0中新增的一個運算符,可以認為是三元操作符?:的簡版,其主要作用是如果 ?? 運算符的左操作數非空,該運算符將返回左操作數,否則返回右操作數。如果能較好地使用此操作符,將會得到意想不到的效果。
public class Program
{
class MyClass {}
static MyClass instance;
static void Main()
{
//如果instance == null,則做初始化
//常規寫法:
if(instance == null)
{
instance = new MyClass();
}
//使用??的寫法:
instance = instance ?? new MyClass();
}
}
也可以用于函數的返回值中:
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()));
}
}
新聞熱點
疑難解答