??是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())); } }
本文由www.bailinglan.net转载