本帖最后由 爱吃桃子的猫 于 2014-4-11 14:17 编辑
一个接口定义了一个行为契约。接口可以包容方法、属性、事件、以及索引器。在一个接口声明中,我们可以声明零个或者多个成员。所有接口成员的默认访问类型都是Public。如果在接口成员声明中包括了任何修饰符,那么会产生一个编译器错误。与一个非抽象类类似,一个抽象类必须提供接口中所有成员的实现,只要这些成员在这个类的基类中出现过。
请看下面的接口:
public interface IDrawingObject{
event EventHandler OnDraw; //事件
string Name // 属性
{
get;
set;
}
int this[int index] //索引器
{
get;
set;
}
void SetValue(); //方法
}
该接口包含了 C# 接口所能接纳的所有成员,事件,属性,索引器,方法。把该接口编译后,我们用 MSIL Disassembler 工具查看一下:其实属性Name 对应于 Get_Name()、Set_Name() 这两个方法,事件OnDraw 对应于 add_OnDraw()、remove_OnDraw() 这两个方法,索引器对应于 get_Item()、set_Item() 这两个方法。
再看下面的委托和类的定义:
public delegate void TestEventDelegate(object sender, System.EventArgs e);
class TestClass
{ public void SetValue()
{
}
}定义一个委托和定义一个类是没有什么区别的,都是定义了个新的类型。所以 C# 接口是不能有委托的,除非微软告诉我们 C# 接口中是可以定义类的。
具体例子可以参考:
C#中委托,索引器,属性,接口例子http://www.cnblogs.com/zchunbo/archive/2012/01/01/2309632.html
不好意思我是小菜一枚,不知道这些网上找到的例子是否对你有帮助。谢谢,加油!
|