c#中??的写法是什么意思

比如returna??(a=CreateObjectSet<cfg_program>("cfg_program"));... 比如return a ?? (a = CreateObjectSet<cfg_program>("cfg_program")); 展开
 我来答
java发烧友
推荐于2018-04-26 · TA获得超过225个赞
知道小有建树答主
回答量:193
采纳率:100%
帮助的人:147万
展开全部
这个等同于
if(a==null)
{
a = CreateObjectSet<cfg_program>("cfg_program");
return a;
}
else
{
return a;
}

双问号是.net的语法糖,是一个便捷的写法,意思是a是否为null,是的话a=后面的表达式,不为空就无变化。建议自己写个简单的测试看看,很easy的。
顺便说一下,后面那括号里面应该不需要a=了吧 应该是
return a ?? (CreateObjectSet<cfg_program>("cfg_program"));
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-12-21
展开全部
如果a不是null,返回a,否则返回CreateObjectSet<cfg_program>("cfg_program")

等同于
return a==null?a:CreateObjectSet<cfg_program>("cfg_program")
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
syht2000
高粉答主

2012-12-21 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
空合并运算符(??):用于定义可空类型和引用类型的默认值。如果此运算符的左操作数不为 null,则此运算符将返回左操作数;否则返回右操作数。
例:a??b,当a为null时则返回b,a不为空时返回a本身。空合并运算符为右结合运算符,即操作时从右向左进行组合的。如,“a??b??c”的形式按“a??(b??c)”计算。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式