首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C#:'+ = anEvent'和'+ = new EventHandler(anEvent)'之间的区别

在C#中,+=new EventHandler(anEvent) 都是用于处理事件的。

+= 是一种简写,它将一个方法(通常是事件处理程序)添加到事件中。例如:

代码语言:csharp
复制
button.Click += Button_Click;

private void Button_Click(object sender, EventArgs e)
{
    // 事件处理程序的代码
}

new EventHandler(anEvent) 是创建一个新的 EventHandler 实例,并将其添加到事件中。例如:

代码语言:csharp
复制
button.Click += new EventHandler(Button_Click);

private void Button_Click(object sender, EventArgs e)
{
    // 事件处理程序的代码
}

这两种方法都可以实现相同的目的,即将事件处理程序添加到事件中。但是,+= 是一种更简洁的方法,并且在许多情况下更易于阅读和理解。

因此,在大多数情况下,您应该使用 += 而不是 new EventHandler(anEvent)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C#newoverride区别

C#中实现重写方法,可以用newoverride两个关键字来实现,究竟他们之间有什么区别呢?...下面,我以例子来说明他们之间微妙区别: public class GrandClass //基类 { public GrandClass() { Console.WriteLine...这里我们可以看到,同样是用子类对象构造一个基类句柄.结果却很明显,可以看到[3][6]区别.[3]调用了子类Method(),而[6]调用了基类Method().   ...如果想调用子类new方法,用子类句柄(绝对不能用基类句柄)来调用.结果[9]可以看出来.   ...用new是在为子类定义方法名时,实在没有办法定义方法名情况才与基类方法相同,但这个方法只在子类中起到作用,而不影响基类方法.也就是说,new方法就是子类新定义方法.用override是直正意义上重载

29330

Java中使用Hibernate系列之映射关联启动工作学习(第五节)

前面一节我们建好了映射文件,现在我们把peopleevents 一起放到EventManager新方法中统一管理: private void addPersonToEvent(Long personId...= (Event) session.load(Event.class, eventId); aPerson.getEvents().add(anEvent); session.getTransaction...().commit(); } 在加载一PersonEvent后,使用普通集合方法就可容易地修改我们定义集合,Hibernate会自动检测到集合已经被修改并需要更新回数据库,这叫做自动脏检查(automatic...当然,你也可以在不同单元操作里面加载personevent,或在Session以外修改不是处在持久化(persistent)状态下对象,还可以在一个集合被脱管时修改它: private void...("My Event", new Date()); Long personId = mgr.createAndStorePerson("Foo", "Bar"); mgr.addPersonToEvent

46670
  • C#知识点讲解之C#delegate、event、Action、EventHandler使用区别

    今天来讲一讲《C#delegate、event、Action、EventHandler使用区别》 小故事讲解这四位前世今生 曾经.Net大佬只有一个Delegete(委托),别人想用委托时候,...但是在其他类中(订阅者)就只能+= -=了,也就是说发布者发布一个事件后,订阅者针对他只能进行自身订阅取消。...但是,在事件发布订阅过程中,定义事件原型委托类型常常是一件重复性工作。 所以,EventHandler应运而生 它出生就是为了避免这种重复性工作,并建议尽量使用该类型作为事件原型。...所以,Action应运而生 //Action是系统预定义一种委托,无返回值,参数在中传入 public Action m_action; //比较下delegateAction定义...知道每个类型因何而来,也就知道了应用场景区别了,接下来是如何使用了。

    8.9K40

    golang newmake区别

    Go语言中newmake都是用来内存分配原语(allocation primitives)。简单说,new只分配内存,make用于slice,map,channel初始化。...通过new其返回一个指向新分配类型为int指针,指针值为0xc00004c088,这个指针指向内容值为零(zero value)。 同时,需要注意是不同指针类型零值是不同。...它new还能配合使用 示例 var mv *map[string]string fmt.Printf("mv: %p %#v \n", &mv, mv)//mv: 0xc042004028 (*map...小结: makenew都是golang用来分配内存內建函数,且在堆上分配内存,make 即分配内存,也初始化内存。new只是将内存清零,并没有初始化内存。...make返回还是引用类型本身;而new返回是指向类型指针。 make只能用来分配及初始化类型为slice,map,channel数据;new可以分配任意类型数据。 目录

    5.4K20

    c++ newmalloc区别

    10点区别  1....operator new  这个operator new不分配任何内存,它只是简单地返回指针实参,然后右new表达式负责在place_address指定地址进行对象初始化工作。 ...2.返回类型安全性  new操作符内存分配成功时,返回是对象类型指针,类型严格与对象匹配,无须进行类型转换,故new是符合类型安全性操作符。...5.是否调用构造函数/析构函数  使用new操作符来分配对象内存时会经历三个步骤:  第一步:调用operator new 函数(对于数组是operator new[])分配一块足够大,原始,未命名内存空间以便存储特定类型对象...标准库是定义了operator new函数operator delete函数8个重载版本:  //这些版本可能抛出异常 void * operator new(size_t); void * operator

    97900

    Golang中makenew区别

    new: func new(Type) *Type 接收一个参数,这个参数是一种类型,而不是一个值,分配好内存后,返回一个指向该类型内存地址指针,这个指针指向内容值为该类型零值。...对于不同数据类型,零值意义是完全不一样。...比如,对于bool类型,零值为false;int零值为0;string零值是空字符串 make: func make(t Type, size ...IntegerType) Type 同样用于内存分配...,但new不同,make用于channel,slicemap分配,而且返回类型就是这三个类型本身,而不是它们指针,因为这三种类型本身就是引用类型,所以就没必要返回他们指针了。...具体而言,有如下几种用法: (1)make(map[string]string):即缺少长度参数,只传类型,这种用法只能用在类型为map或chan场景 (2)make([]int, 2):指定了长度

    73230

    实例讲解overridenew区别

    ---- 二、newnew关键字可以在派生类中隐藏基类方法,也就说在使用派生类调用方法是New关键字新定义出来方法,而不是基类方法。...在不使用New关键字来隐藏基类方法也是可以,编译器会出现一个警告,提示如果有意去隐藏基类方法,请使用New关键字修饰。...Virtual关键字override紧密不可分,如果要实现Virtual方法就必须要使用override或new关键字(newoverride产生机理不同)。...= new B(); // 实例化b对象,B是b实例类 c = new C(); // 实例化c对象,C是c实例类 d = new D(); // 实例化d对象,D是d实例类 a.Func...(优先级最后) 4、new时候,虽然继承类中也有同名方法,但是已经与父类那个没有关系。故也不会调用到这个方法。除非是以子类申明对象才能调用到。

    917100

    Go语言newmake区别

    Go语言中newmake都是用来内存分配原语(allocation primitives)。简单说,new只分配内存,make用于slice,map,channel初始化。...通过new其返回一个指向新分配类型为int指针,指针值为0xc00004c088,这个指针指向内容值为零(zero value)。同时,需要注意是不同指针类型零值是不同。...它new还能配合使用示例var mv *map[string]stringfmt.Printf("mv: %p %#v \n", &mv, mv)//mv: 0xc042004028 (*map[string...小结:makenew都是golang用来分配内存內建函数,且在堆上分配内存,make 即分配内存,也初始化内存。new只是将内存清零,并没有初始化内存。...make返回还是引用类型本身;而new返回是指向类型指针。make只能用来分配及初始化类型为slice,map,channel数据;new可以分配任意类型数据。

    37120

    HTTPHTTPS 之间区别

    PS: https就是httpTCP之间有一层SSL层,这一层实际作用是防止钓鱼和加密。防止钓鱼通过网站证书,网站必须有CA证书,证书类似于一个解密签名。...另外是加密,加密需要一个密钥交换算法,双方通过交换后密钥加解密。 http与https有什么区别呢?本文详解httphttps区别。...所以httphttps之间区别就在于其传输内容是否加密是否是开发性内容。这也是你为什么常常看见https开头网址都是一些类似银行网站这类网址原因。...HTTPSHTTP区别: https协议需要到ca申请证书,一般免费证书很少,需要交费。...b) 服务端客户端之间所有通讯,都是加密. i. 具体讲,是客户端产生一个对称密钥,通过server 证书来交换密钥,一般意义上握手过程。 ii.

    1.4K40

    Go语言中newmake区别

    Go语言中newmake是内建两个函数,主要用来创建分配类型内存。在我们定义生成变量时候,可能会觉得有点迷惑,其实他们规则很简单,下面我们就通过一些示例说明他们区别使用。...这就是上面错误提示原因。 对于值类型声明不需要,是因为已经默认帮我们分配好了。 要分配内存,就引出来今天newmake。 new 对于上面的问题我们如何解决呢?...make make也是用于内存分配,但是new不同,它只用于chan、map以及切片内存创建,而且它返回类型就是这三个类型本身,而不是他们指针类型,因为这三种类型就是引用类型,所以就没有必要返回他们指针了...注意,因为这三种类型是引用类型,所以必须得初始化,但是不是置为零值,这个new是不一样。...其实new不常用 所以有new这个内置函数,可以给我们分配一块内存让我们使用,但是现实编码中,它是不常用

    37820

    Go语言中newmake区别

    Go语言中newmake是内建两个函数,主要用来创建分配类型内存。在我们定义生成变量时候,可能会觉得有点迷惑,其实他们规则很简单,下面我们就通过一些示例说明他们区别使用。...对于值类型声明不需要,是因为已经默认帮我们分配好了。 要分配内存,就引出来今天new 对于上面的问题我们如何解决呢?既然我们知道了没有为其分配内存,那么我们使用new分配一个吧。...make 也是用于内存分配,但是不同,它只用于、以及切片内存创建,而且它返回类型就是这三个类型本身,而不是他们指针类型,因为这三种类型就是引用类型,所以就没有必要返回他们指针了。...注意,因为这三种类型是引用类型,所以必须得初始化,但是不是置为零值,这个是不一样。 从函数声明中可以看到,返回还是该类型。...其实new不常用 所以有new这个内置函数,可以给我们分配一块内存让我们使用,但是现实编码中,它是不常用

    52770

    javac++里new区别

    后来才知道,在许多Java书中,把对象对象引用混为一谈。...为了形象地说明对象、对象引用及它们之间关系,可以做一个或许不很妥当比喻: 对象好比是一只没有线风筝,引用变量是一根线,可以用来系风筝。...Java创建对象方式C++中比较类似,但是还是存在一定差异,下面欧柏泰克大家一起来看看JAVAC++创建对象方式比较吧: 1、C++创建对象方式 在C++中我们可以采用如下两种方式来创建对象...3、总结 通过图2图3我们会发现Java创建对象方式C++创建对象方式第二种很像,除了我故意写pdog还有数字,其他都是一样。...一、new创建类对象与不new区别 下面是自己总结一些关于new创建类对象特点: new创建类对象需要指针接收,一处初始化,多处使用 new创建类对象使用完需delete销毁 new创建对象直接使用堆空间

    1.1K10
    领券