请问C#中给匿名对象注册方法的问题

twlyy 2016-04-20 10:29:26

heater.BoilEvent += (new Alarm()). MakeAlert;
这里Alarm是一个类名,MakeAlert是一个方法,左边是一个事件,那么上句是什么意思呢?
正常的不是应该为:
Alarm alarm = new Alarm();
heater.BoilEvent += alarm. MakeAlert;
(new Alarm()). MakeAlert;怎么理解呢?
...全文
151 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
DealFish 2017-12-14
  • 打赏
  • 举报
回复
new了一个类的实例,没有给他起个名字,跟起了个名字,本质一样的 new Xxxxx()这就是一个类的实例。与 var abc =new Xxxxx();是一样的
xuzuning 2016-04-20
  • 打赏
  • 举报
回复
你都知道:正常的不是应该为: Alarm alarm = new Alarm(); heater.BoilEvent += alarm. MakeAlert; 那么把第一行的 alarm 的值代入第二行,不就是 heater.BoilEvent += new Alarm(). MakeAlert; 了吗? 写作 heater.BoilEvent += (new Alarm()). MakeAlert; 只是为了醒目一点
twlyy 2016-04-20
  • 打赏
  • 举报
回复
我是初学者,刚看C# 没多久,new xxx().YYY这种写法没用过,可不可以讲解一下呢?谢谢您。
  • 打赏
  • 举报
回复
外面一个括号都是多余的,你没用过new xxx().YYY的写法吗? 这种写法代码这个xxx只是在这里被使用一次,后面不再有地方要使用它,这种写法的好处就是少写一部分代码(同样少死点脑细胞来想参数名),还有好处就是这个xxx的作用域固定就在这里,不会跟其它地方冲突
枫0子K 2016-04-20
  • 打赏
  • 举报
回复
其实就是这样:
DateTime dt = new DateTime();
var time = dt.ToLongTimeString();
跟下面的代码等同
var time = new DateTime().ToLongTimeString();
从上面来看,如果这个dt只用一次的情况下,第二种写法是不是简洁很多呢。 楼主的代码也是这样的意思,使用new Alarm().MakeAlert;写法更简洁。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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