Override是指父类和子类之间方法的继承关系,这些方法有着相同的名称和参数类型。
Overload是指同一个类中不同方法(可以在子类也可以在父类中定义)间的关系,这些方法有着相同的名称和不同的参数类型。
也就是说,如果在子类声明相同的方法名称的时候,如果不是用inherited来继承的话,就会将父类的方法覆盖掉;而且父类的方法声明必须标识为virtual和dynamic;overload比较好理解,就是同类里有许多相同的方法名称,但是参数不相同。且第一个方法可以不用overload来标识。
override的方法返回值类型必须一致,其modifier可以扩大,不可以缩小。
一个不是用abstract标识的方法不可以override成abstract方法。
override的子类的方法拋出的异常只能是父类方法拋出异常的子异常。
Override是指父类和子类之间方法的继承关系,这些方法有着相同的名称和参数类型。
Overload是指同一个类中不同方法(可以在子类也可以在父类中定义)间的关系,这些方法有着相同的名称和不同的参数类型。
也就是说,如果在子类声明相同的方法名称的时候,如果不是用inherited来继承的话,就会将父类的方法覆盖掉;而且父类的方法声明必须标识为virtual和dynamic;overload比较好理解,就是同类里有许多相同的方法名称,但是参数不相同。且第一个方法可以不用overload来标识。
override的方法返回值类型必须一致,其modifier可以扩大,不可以缩小。
一个不是用abstract标识的方法不可以override成abstract方法。
override的子类的方法拋出的异常只能是父类方法拋出异常的子异常。
查了很多资料,还是不懂。
1.C#中的事件和委托的作用?
2.他们之间的关系?
3.和什么情况使用委托和事件?
public partial class TestDemo : System.Web.UI.Page {
private delegate void WriteHander();//委托
public event WriteHander writeEven;//事件
protected void Page_Load(object sender, EventArgs e) {
WriteHander wHander = new WriteHander(MyWrite);
wHander += HeWrite;
wHander();//用委托调用方法
writeEven += HeWrite;
writeEven += MyWrite;
writeEven();//用事件调用方法
}
public void MyWrite() {
Response.Write("MyWrite");
}
public void HeWrite() {
Response.Write("HeWrite");
}
}
如上面的代码:
用委托和用事件都能实现调用MyWrite和HeWrite两个方法。
4.但是用事件的方式来调用的话有什么好处?
5.添加了委托一定要再定义事件来调用么?
6/什么情况下只要使用委托就可以,什么情况下必须配合事件使用?
1.C#中的事件和委托的作用?
事件代表一个组件能够被关注的一种信号,比如你的大肠会向你发出想拉屎的信号,你就可以接收到上厕所。
委托是可以把一个过程封装成变量进行传递并且执行的对象,比如你上蹲坑和上坐马桶拉屎的方式是不一样的,但是你的大脑不需要知道两种方式的不同,只需要在蹲坑的时候获取身体用于蹲位姿势的委托进行调用拉屎,在坐马桶的时候获取坐姿的委托进行调用拉屎。
2.他们之间的关系?
委托是一种类型,事件是一种成员,就相当于public int Age {get;set;}这个属性中,int就是类型,Age是一个成员,public event EventHandler Push;这个事件中EventHandler就是委托类型,Push是事件他是一个成员。
3.和什么情况使用委托和事件?
事件是组件中的抽象概念,同样包括状态和操作也是组件中的概念,对应到C#里面就是属性和方法。所以像控件之类的组件都会有事件。而委托代表一个代码的执行过程,C#3.0引入linq以后,用的就非常频繁了。
4.但是用事件的方式来调用的话有什么好处?
事件是一种封装,就好像属性会封装字段一样,可以把定义和实现隔离开来,给你举个例子就是DateTime实际上你看那么多属性,其实里面只有一个字段存储时间,各种日期啊年啊属性都是根据这个时间算出来的。事件也把内部类型为一个委托的字段封装起来,这样在类的外部就只能使用事件来注册或者注销事件关注,而不能引发事件。就好像你拉不拉屎不由其他人控制一样。
5.添加了委托一定要再定义事件来调用么?
看情况,你可以不用属性封装字段,但是在代码设计上来说,或者面向组件设计上来说,封装是一种设计原则,你学过设计模式,或者参与过大型系统的设计就会很容易理解这点。
6/什么情况下只要使用委托就可以,什么情况下必须配合事件使用?
一般情况下建立组件模型都使用事件
本文详细解析了C#中的Override与Overload的区别及应用,并通过实例介绍了事件与委托的概念及其应用场景。
228

被折叠的 条评论
为什么被折叠?



