![](/icons/27874de.gif)
◆
![](/icons/27874yi.gif)
![](/icons/27874yi.gif)
◆ 接口可以包容思路方法、C#属性、事件、以及索引器;
◆ 在
![](/icons/27874yi.gif)
![](/icons/27874dou.gif)
◆ 所有接口成员
![](/icons/27874de.gif)
◆ 如果在接口成员声明中包括了任何修饰符
![](/icons/27874dou.gif)
![](/icons/27874yi.gif)
![](/icons/27874cuowu.gif)
◆ 和
![](/icons/27874yi.gif)
![](/icons/27874dou.gif)
![](/icons/27874yi.gif)
![](/icons/27874de.gif)
![](/icons/27874dou.gif)
![](/icons/27874de.gif)
![](/icons/27874dou2.gif)
接口
![](/icons/27874de.gif)
1. 面向接口编程利用OO
![](/icons/27874de.gif)
![](/icons/27874yi.gif)
![](/icons/27874dou.gif)
![](/icons/27874dou2.gif)
![](/icons/27874yi.gif)
![](/icons/27874dou.gif)
![](/icons/27874chengxu.gif)
![](/icons/27874de.gif)
![](/icons/27874dou.gif)
![](/icons/27874yi.gif)
![](/icons/27874chengxu.gif)
![](/icons/27874dou.gif)
![](/icons/27874chengxu.gif)
![](/icons/27874de.gif)
![](/icons/27874dou.gif)
![](/icons/27874dou.gif)
![](/icons/27874yi.gif)
![](/icons/27874dou.gif)
![](/icons/27874dou.gif)
![](/icons/27874dou.gif)
![](/icons/27874de.gif)
![](/icons/27874dou2.gif)
![](/icons/27874dou.gif)
![](/icons/27874yinwei.gif)
![](/icons/27874de.gif)
![](/icons/27874de.gif)
![](/icons/27874dou.gif)
![](/icons/27874dou2.gif)
![](/icons/27874de.gif)
![](/icons/27874dou2.gif)
2. 换个视角看
![](/icons/27874dou.gif)
![](/icons/27874de.gif)
![](/icons/27874yi.gif)
![](/icons/27874dou.gif)
![](/icons/27874dou.gif)
![](/icons/27874de.gif)
3. 接口
![](/icons/27874de.gif)
![](/icons/27874dou.gif)
![](/icons/27874yi.gif)
![](/icons/27874dou.gif)
![](/icons/27874de.gif)
![](/icons/27874class.gif)
![](/icons/27874dou2.gif)
![](/icons/27874de.gif)
![](/icons/27874de.gif)
![](/icons/27874dou.gif)
![](/icons/27874de.gif)
![](/icons/27874dou2.gif)
![](/icons/27874de.gif)
![](/icons/27874dou.gif)
![](/icons/27874dou.gif)
![](/icons/27874de.gif)
![](/icons/27874dou.gif)
![](/icons/27874yi.gif)
![](/icons/27874de.gif)
![](/icons/27874dou2.gif)
![](/icons/27874de.gif)
![](/icons/27874jiajia.gif)
![](/icons/27874dou.gif)
![](/icons/27874yinwei.gif)
![](/icons/27874de.gif)
![](/icons/27874dou.gif)
![](/icons/27874de.gif)
![](/icons/27874dou2.gif)
![](/icons/27874de.gif)
![](/icons/27874de.gif)
![](/icons/27874dou.gif)
![](/icons/27874dou.gif)
![](/icons/27874dou2.gif)
空接口
![](/icons/27874de.gif)
在接口使用
![](/icons/27874de.gif)
1. 类似于ObjectBuilder中
![](/icons/27874de.gif)
![](/icons/27874yi.gif)
![](/icons/27874de.gif)
![](/icons/27874de.gif)
![](/icons/27874dou2.gif)
Microsoft.Practices.ObjectBuilder
{
/// <summary>
/// Represents a builder policy
erface. Since there are no fixed requirements
/// for policies, it acts as a marker
erface from which to derive all other
/// policy
erfaces.
/// </summary>
public
erface IBuilderPolicy
{
}
}
Microsoft.Practices.ObjectBuilder
{
/// <summary>
/// Represents a builder policy
erface. Since there are no fixed requirements
/// for policies, it acts as a marker
erface from which to derive all other
/// policy
erfaces.
/// </summary>
public
erface IBuilderPolicy
{
}
}
2. 你![](/icons/27874de.gif)
![](/icons/27874de.gif)
![](/icons/27874de.gif)
![](/icons/27874hanshu.gif)
![](/icons/27874yi.gif)
![](/icons/27874yinwei.gif)
![](/icons/27874de.gif)
erface Text
{
getText
;
}
erface SqlText : Text
{
}
可以看到,Text接口是用于返回
![](/icons/27874yi.gif)
![](/icons/27874zifu.gif)
![](/icons/27874yi.gif)
![](/icons/27874yi.gif)
![](/icons/27874yi.gif)
![](/icons/27874zifu.gif)
![](/icons/27874yi.gif)
![](/icons/27874zifu.gif)
![](/icons/27874yi.gif)
![](/icons/27874de.gif)
![](/icons/27874zifu.gif)
![](/icons/27874yi.gif)
![](/icons/27874zifu.gif)
![](/icons/27874de.gif)
![](/icons/27874hanshu.gif)
public void doQuery(SqlText sqlText)
而不是这样:
public void doQuery(Text text)
避免用户产生歧义
![](/icons/27874de.gif)
![](/icons/27874yi.gif)
![](/icons/27874yi.gif)
![](/icons/27874zifu.gif)
接口
![](/icons/27874de.gif)
我们都知道C#
![](/icons/27874de.gif)
![](/icons/27874de.gif)
![](/icons/27874dou.gif)
![](/icons/27874de.gif)
![](/icons/27874dou.gif)
![](/icons/27874dou.gif)
![](/icons/27874de.gif)
![](/icons/27874dou.gif)
![](/icons/27874de.gif)
![](/icons/27874chengxu.gif)
![](/icons/27874yi.gif)
![](/icons/27874dou.gif)
![](/icons/27874dou2.gif)
![](/icons/27874de.gif)
![](/icons/27874dou.gif)
![](/icons/27874de.gif)
![](/icons/27874yi.gif)
![](/icons/27874de.gif)
![](/icons/27874dou.gif)
![](/icons/27874yi.gif)
![](/icons/27874yi.gif)
![](/icons/27874de.gif)
![](/icons/27874yi.gif)
![](/icons/27874de.gif)
![](/icons/27874dou.gif)
![](/icons/27874dou2.gif)
![](/icons/27874dou.gif)
![](/icons/27874de.gif)
![](/icons/27874dou.gif)
![](/icons/27874yi.gif)
![](/icons/27874dou.gif)
![](/icons/27874de.gif)
![](/icons/27874dou.gif)
![](/icons/27874dou2.gif)
![](/icons/27874dou.gif)
![](/icons/27874dou.gif)
![](/icons/27874dou.gif)
![](/icons/27874dou.gif)
![](/icons/27874dou.gif)
![](/icons/27874dou2.gif)
![](/icons/27874dou2.gif)
![](/icons/27874de.gif)
![](/icons/27874de.gif)
![](/icons/27874dou.gif)
![](/icons/27874de.gif)
![](/icons/27874yi.gif)
![](/icons/27874dou2.gif)
![](/icons/27874de.gif)
![](/icons/27874dou.gif)
![](/icons/27874dou2.gif)
![](/icons/27874de.gif)
![](/icons/27874chengxu.gif)
![](/icons/27874dou.gif)
![](/icons/27874de.gif)
![](/icons/27874dou.gif)
![](/icons/27874dou.gif)
![](/icons/27874yi.gif)
![](/icons/27874dou.gif)
![](/icons/27874yi.gif)
![](/icons/27874dou.gif)
![](/icons/27874dou.gif)
![](/icons/27874de.gif)
public
erface IDrawingObject
{
event EventHandler _disibledevent=>
这下大家都明白了
其实属性Name对应于Get_Name
,Set_Name
这两个思路方法
事件OnDraw对应于add_OnDraw
,remove_OnDraw
这两个思路方法
索引器对应于get_Item
,
_Item
这两个思路方法
在看下面
委托和类
定义:
public delegate void TestEventDelegate(object sender,
.EventArgs e);
TestClass
{
public void SetValue![](/icons/27874kh.gif)
{ }
}
![](http://www.crazycoder.cn/WebFiles/20092/6745aed6-72a0-4dec-b5bd-6f1cdc6f7091.jpg)
看到了吧
定义
个委托和定义
个类是没有什么区别![](/icons/27874de.gif)
都是定义了个新
类型
所以C#接口是不能有委托![](/icons/27874de.gif)
除非微软告诉我们C#接口中是可以定义类![](/icons/27874de.gif)
![](/icons/27874dou2.gif)
延伸阅读
最新评论