这个等同于
if(a==null)
{
a = CreateObjectSet
return a;
}
else
{
return a;
}
双问号是.net的语法糖,是一个便捷的写法,意思是a是否为null,是的话a=后面的表达式,不为空就无变化。建议自己写个简单的测试看看,很easy的。
顺便说一下,后面那括号里面应该不需要a=了吧 应该是
return a ?? (CreateObjectSet
如果a不是null,返回a,否则返回CreateObjectSet
等同于
return a==null?a:CreateObjectSet
空合并运算符(??):用于定义可空类型和引用类型的默认值。如果此运算符的左操作数不为 null,则此运算符将返回左操作数;否则返回右操作数。
例:a??b,当a为null时则返回b,a不为空时返回a本身。空合并运算符为右结合运算符,即操作时从右向左进行组合的。如,“a??b??c”的形式按“a??(b??c)”计算。