比方,在一个工程中,用到了许多窗体,有些窗体需要对其封闭事宜重新处置惩罚,有些需要对其转变大小事宜处置惩罚。然则每写一个窗体时都要写一遍封闭事宜或转变大小事宜的要领,老是很烦的。这时候能够用继续吗?
public class IControlAble1 { public event EventHandler OnCloseEvent;//封闭 public void Control_Close(object sender, EventArgs e) { if (OnCloseEvent != null) { OnCloseEvent(sender, e); } } } public class IControlAble2 { public event EventHandler OnSizeChangeEvent;//转变大小 public void Control_SizeChange(object sender, EventArgs e) { if (OnSizeChangeEvent != null) { OnSizeChangeEvent(sender, e); } } }
试想一下,每写一个窗体类,都要继续一次IControlAble1或IControlAble2老是觉得很新鲜的,由于这两个类不是窗体类。这时候有一个东西能够完成,这就是接口。
接口,书上是如许说的,接口是一种行为原则。而且关于接口生活中也很罕见,比方我们常说USB2.0接口,USB2.0就是一种原则,一切生产USB线的厂家并没有直接关系,然则人人都恪守USB2.0这个原则来生产,每根线的衔接处,长宽高是多少,每根数据线怎样排... 都要恪守这个原则。如许人人生产出来的线就可以通用。
关于顺序来讲,就比如差别的类具有雷同的超类,而且都完成了超类的笼统要领。如许一切类都有了某种原则。然则C#中是单继续的,如许完成起来比较难题。因而C#中就有了接口的观点。看看接口的规范情势和特性:
/// <summary> /// 1、接口不允许public,private,interna、protected润饰,由于一切的接口都是公用的; /// 2、成员不带代码体; /// 3、接口不能定义字段成员; /// 4、不能用关键字static,virtual,abstract、sealed润饰 /// 5、一个类能够完成多个接口 /// </summary> interface IMyInterfaceAble { //要领、字段 int MyValue { get; set; } void Method1(); void Method2(); }
C#中对接口的定名平常是:I***able,I示意接口,Able后缀。所以接口能够看作:有...才能的。
如许能够处理上面的问题了。将两个类修正为接口,然后其他窗体类完成就可以够了。
interface IControlAble1 { //没有代码体,而且不润饰 event EventHandler OnCloseEvent;//封闭 void Control_Close(object sender, EventArgs e); } interface IControlAble2 { event EventHandler OnSizeChangeEvent; void Control_SizeChange(object sender, EventArgs e); } public class MainForm : IControlAble1,IControlAble2//能够完成多个接口 { /* 窗体代码 */ public event EventHandler OnCloseEvent; public void Control_Close(object sender, EventArgs e) { Console.WriteLine("重写封闭事宜。"); } public event EventHandler OnSizeChangeEvent; public void Control_SizeChange(object sender, EventArgs e) { Console.WriteLine("重写大小转变事宜。"); } } public class ChildForm1 : IControlAble1 { /* * 窗体代码 */ public event EventHandler OnCloseEvent; public void Control_Close(object sender, EventArgs e) { Console.WriteLine("重写封闭事宜。"); } } public class ChildForm2 : IControlAble2 { /* 窗体代码 */ public event EventHandler OnSizeChangeEvent; public void Control_SizeChange(object sender, EventArgs e) { Console.WriteLine("重写大小转变事宜。"); } }
如许,代码写起来更方便了,而且不会漏写。
以上就是C#基础知识整顿:基础知识(8) 接口的内容,更多相关内容请关注ki4网(www.ki4.cn)!