一个简单的c#语句

顾西昂 2018-01-17 02:36:00

var response = filterContext.Response = filterContext.Response ?? new HttpResponseMessage();

两个等于号是什么意思?大佬详细解答下这句语句所有的点,谢啦。
...全文
1295 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
杀马特王 2018-04-13
  • 打赏
  • 举报
回复
这个写法,我觉得这样程序的可读性会好差,大概什么意思上面大家都写了,就这样了,语法糖用就用了,过分的用,看起来都费劲
afu45 2018-04-11
  • 打赏
  • 举报
回复
??相当于三元运算符的简版 a=b?c:d; (如果b为真,那么a=c,如果b为假,那么a=d) a=b??c; (如果b为null,那么a=c,否则a=b) 其实也就等同于 a = (b==null?c:b)
hello乐 2018-04-11
  • 打赏
  • 举报
回复
这不是三元运算符,??代表啥
You冷 2018-04-10
  • 打赏
  • 举报
回复
说实话,也不算三元运算
You冷 2018-04-10
  • 打赏
  • 举报
回复
引用 3 楼 hanjun0612 的回复:
两个问好啊。。。。害我找了半天等号。。。 a??b代表 a如果是null,就赋值b
你应该找两个??是代表什么。。。
qq_26671507 2018-04-10
  • 打赏
  • 举报
回复
上面都已经说明白了 意思就是 var response = (filterContext.Response = filterContext.Response ?? new HttpResponseMessage()); 这样明白了吧
顾西昂 2018-04-10
  • 打赏
  • 举报
回复
引用 12 楼 maoxiaohai123 的回复:
去百度可空运算符就都知道是什么原因了。
兄弟 我要是问的是一个运算符 我直接发运算符不就结了吗
stevenjin 2018-01-20
  • 打赏
  • 举报
回复
空合并运算符(??): 用于定义可空类型和引用类型的默认值。如果此运算符的左操作数不为null,则此运算符将返回左操作数,否则返回右操作数。 例如:a??b 当a为null时则返回b,a不为null时则返回a本身
MXHai123 2018-01-19
  • 打赏
  • 举报
回复
去百度可空运算符就都知道是什么原因了。
还想懒够 2018-01-19
  • 打赏
  • 举报
回复
引用 9 楼 jjkk168 的回复:
类似于


var response = filterContext.Response;
if(response == null)
{
        response = new HttpResponseMessage();
        filterContext.Response = new HttpResponseMessage();
}

不过个人看法,我是严重反对这种故作高深,从高空摔下来还需要在空间转体360度的方式。代码可读性为第一要素,除非这样写有明显的效率差别。
Sorry,括号中第二句应当是filterContext.Response = response,按址引用关系了。
还想懒够 2018-01-19
  • 打赏
  • 举报
回复
类似于


var response = filterContext.Response;
if(response == null)
{
        response = new HttpResponseMessage();
        filterContext.Response = new HttpResponseMessage();
}

不过个人看法,我是严重反对这种故作高深,从高空摔下来还需要在空间转体360度的方式。代码可读性为第一要素,除非这样写有明显的效率差别。
  • 打赏
  • 举报
回复
这是C#几的糖,我到现在还记得老师当年讲BASIC的时候专门讲过赋值不可以连续赋值的事情。
sichuanwww 2018-01-19
  • 打赏
  • 举报
回复
三元运算
正怒月神 版主 2018-01-18
  • 打赏
  • 举报
回复
var response = filterContext.Response = filterContext.Response ?? new HttpResponseMessage(); 这就像 int a=0; int b=0; int? c=null; a=b=(c??1); 从右到左。 c??1 当 c==null 赋值1, 然后将结果给b,接着b的结果给a。
顾西昂 2018-01-18
  • 打赏
  • 举报
回复
引用 3 楼 hanjun0612 的回复:
两个问好啊。。。。害我找了半天等号。。。 a??b代表 a如果是null,就赋值b
前后两个等号是怎么解释
正怒月神 版主 2018-01-17
  • 打赏
  • 举报
回复
两个问好啊。。。。害我找了半天等号。。。 a??b代表 a如果是null,就赋值b
wanghui0380 2018-01-17
  • 打赏
  • 举报
回复
等效 if( filterContext.Response==null) { filterContext.Response=new HttpResponseMessage(); } var response=filterContext.Response;
五更琉璃 2018-01-17
  • 打赏
  • 举报
回复
等于这样 filterContext.Response = filterContext.Response ?? new HttpResponseMessage(); var response = filterContext.Response;

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧