9 个解决方案
#1
up
#2
委托简单来讲就是对方法的描述,主要用于事件处理.
接口是对类的描述,主要用于类的继承.
接口是对类的描述,主要用于类的继承.
#3
委托是面向对象、类型安全的。委托声明定义一种类型,它用一组特定的参数以及返回类型封装方法。对于静态方法,委托对象封装要调用的方法。对于实例方法,委托对象同时封装一个实例和该实例上的一个方法。如果有一个委托对象和一组适当的参数,则可以用这些参数调用该委托。
委托和接口的类似之处是,它们都允许分隔规范和实现。多个独立的作者可以生成与一个接口规范兼容的多个实现。类似地,委托指定方法的签名,多个作者可以编写与委托规范兼容的多个方法。
委托在以下情况下很有用:
调用单个方法。
一个类可能希望有方法规范的多个实现。
希望允许使用静态方法实现规范。
希望类似事件的设计模式。
调用方不需要知道或获得在其上定义方法的对象。
实现的提供程序希望只对少数选择组件“分发”规范实现。
需要方便的组合。
接口在以下情况下很有用:
规范定义将调用的一组相关方法。
类通常只实现规范一次。
接口的调用方希望转换为接口类型或从接口类型转换,以获得其他接口或类。
委托和接口的类似之处是,它们都允许分隔规范和实现。多个独立的作者可以生成与一个接口规范兼容的多个实现。类似地,委托指定方法的签名,多个作者可以编写与委托规范兼容的多个方法。
委托在以下情况下很有用:
调用单个方法。
一个类可能希望有方法规范的多个实现。
希望允许使用静态方法实现规范。
希望类似事件的设计模式。
调用方不需要知道或获得在其上定义方法的对象。
实现的提供程序希望只对少数选择组件“分发”规范实现。
需要方便的组合。
接口在以下情况下很有用:
规范定义将调用的一组相关方法。
类通常只实现规范一次。
接口的调用方希望转换为接口类型或从接口类型转换,以获得其他接口或类。
#4
to wxy0401(abc)
可能我表达不清楚吧,个人感觉用interface作事件处理似乎更简洁明了和OO。
to maliang00111
这些我也看过,可是有些还是不懂。比如1,4条似乎interface作的也很好啊,2,3,5有什么明显优势、意义吗?怎么感觉有点华而不实呢?6,7能举例说明一下吗?
谢谢!
可能我表达不清楚吧,个人感觉用interface作事件处理似乎更简洁明了和OO。
to maliang00111
这些我也看过,可是有些还是不懂。比如1,4条似乎interface作的也很好啊,2,3,5有什么明显优势、意义吗?怎么感觉有点华而不实呢?6,7能举例说明一下吗?
谢谢!
#5
楼主还没有入门。
#6
to bbdog(贝贝狗)
我确实没入门
你能给些需要用到delegate而interface不能作的东西吗?谢谢!最好是比较实际点的。
我确实没入门
你能给些需要用到delegate而interface不能作的东西吗?谢谢!最好是比较实际点的。
#7
A.DLL定义的一个方法,B.DLL定义一个委托,C.EXE同时引用了A.DLL和B.DLL,则可以把A.DLL中的这个方法按B.DLL定义的委托去调用.而A.DLL没有必要直接引用B.DLL,如果有一天C.EXE想升级的话,可能用D.DLL去替掉A.DLL,而实现新的功能
以上要求如果用接口去实现的话,A.DLL必须要引用B.DLL才可以实现,现实中A.DLL和B.DLL和C.EXE不一定必须是一个厂家的产品,A.DLL的开发商可能根本不知道B.DLL的存在,也不知道C.Exe会如何使用自己.
以上要求如果用接口去实现的话,A.DLL必须要引用B.DLL才可以实现,现实中A.DLL和B.DLL和C.EXE不一定必须是一个厂家的产品,A.DLL的开发商可能根本不知道B.DLL的存在,也不知道C.Exe会如何使用自己.
#8
1.指针变量有两种
第一种.类指针
-------------------------
class a{}
a obj =new a();
//obj 是类指针
-------------------------
第二种.函数指针
-------------------------
delegate void b(int v);
void f(int v){};
b obj=new b(f);
//obj 是函数指针
-------------------------
2.事件就是委托多了个event关键字,你将event去掉,代码不会报错
3.接口是定义类时必须要定义的,不过在C#中,你不定义编译器帮你做了
4.接口是初始化"栈"的模板,"类实体"是初始化"堆"的模板
5.一个类指针由一组"函数指针"与"类指针组成"
6.委托就是函数指针,是面向对象内存实现的基石
第一种.类指针
-------------------------
class a{}
a obj =new a();
//obj 是类指针
-------------------------
第二种.函数指针
-------------------------
delegate void b(int v);
void f(int v){};
b obj=new b(f);
//obj 是函数指针
-------------------------
2.事件就是委托多了个event关键字,你将event去掉,代码不会报错
3.接口是定义类时必须要定义的,不过在C#中,你不定义编译器帮你做了
4.接口是初始化"栈"的模板,"类实体"是初始化"堆"的模板
5.一个类指针由一组"函数指针"与"类指针组成"
6.委托就是函数指针,是面向对象内存实现的基石
#9
非常感谢jointan,wxwinter的帮助,呵呵
#1
up
#2
委托简单来讲就是对方法的描述,主要用于事件处理.
接口是对类的描述,主要用于类的继承.
接口是对类的描述,主要用于类的继承.
#3
委托是面向对象、类型安全的。委托声明定义一种类型,它用一组特定的参数以及返回类型封装方法。对于静态方法,委托对象封装要调用的方法。对于实例方法,委托对象同时封装一个实例和该实例上的一个方法。如果有一个委托对象和一组适当的参数,则可以用这些参数调用该委托。
委托和接口的类似之处是,它们都允许分隔规范和实现。多个独立的作者可以生成与一个接口规范兼容的多个实现。类似地,委托指定方法的签名,多个作者可以编写与委托规范兼容的多个方法。
委托在以下情况下很有用:
调用单个方法。
一个类可能希望有方法规范的多个实现。
希望允许使用静态方法实现规范。
希望类似事件的设计模式。
调用方不需要知道或获得在其上定义方法的对象。
实现的提供程序希望只对少数选择组件“分发”规范实现。
需要方便的组合。
接口在以下情况下很有用:
规范定义将调用的一组相关方法。
类通常只实现规范一次。
接口的调用方希望转换为接口类型或从接口类型转换,以获得其他接口或类。
委托和接口的类似之处是,它们都允许分隔规范和实现。多个独立的作者可以生成与一个接口规范兼容的多个实现。类似地,委托指定方法的签名,多个作者可以编写与委托规范兼容的多个方法。
委托在以下情况下很有用:
调用单个方法。
一个类可能希望有方法规范的多个实现。
希望允许使用静态方法实现规范。
希望类似事件的设计模式。
调用方不需要知道或获得在其上定义方法的对象。
实现的提供程序希望只对少数选择组件“分发”规范实现。
需要方便的组合。
接口在以下情况下很有用:
规范定义将调用的一组相关方法。
类通常只实现规范一次。
接口的调用方希望转换为接口类型或从接口类型转换,以获得其他接口或类。
#4
to wxy0401(abc)
可能我表达不清楚吧,个人感觉用interface作事件处理似乎更简洁明了和OO。
to maliang00111
这些我也看过,可是有些还是不懂。比如1,4条似乎interface作的也很好啊,2,3,5有什么明显优势、意义吗?怎么感觉有点华而不实呢?6,7能举例说明一下吗?
谢谢!
可能我表达不清楚吧,个人感觉用interface作事件处理似乎更简洁明了和OO。
to maliang00111
这些我也看过,可是有些还是不懂。比如1,4条似乎interface作的也很好啊,2,3,5有什么明显优势、意义吗?怎么感觉有点华而不实呢?6,7能举例说明一下吗?
谢谢!
#5
楼主还没有入门。
#6
to bbdog(贝贝狗)
我确实没入门
你能给些需要用到delegate而interface不能作的东西吗?谢谢!最好是比较实际点的。
我确实没入门
你能给些需要用到delegate而interface不能作的东西吗?谢谢!最好是比较实际点的。
#7
A.DLL定义的一个方法,B.DLL定义一个委托,C.EXE同时引用了A.DLL和B.DLL,则可以把A.DLL中的这个方法按B.DLL定义的委托去调用.而A.DLL没有必要直接引用B.DLL,如果有一天C.EXE想升级的话,可能用D.DLL去替掉A.DLL,而实现新的功能
以上要求如果用接口去实现的话,A.DLL必须要引用B.DLL才可以实现,现实中A.DLL和B.DLL和C.EXE不一定必须是一个厂家的产品,A.DLL的开发商可能根本不知道B.DLL的存在,也不知道C.Exe会如何使用自己.
以上要求如果用接口去实现的话,A.DLL必须要引用B.DLL才可以实现,现实中A.DLL和B.DLL和C.EXE不一定必须是一个厂家的产品,A.DLL的开发商可能根本不知道B.DLL的存在,也不知道C.Exe会如何使用自己.
#8
1.指针变量有两种
第一种.类指针
-------------------------
class a{}
a obj =new a();
//obj 是类指针
-------------------------
第二种.函数指针
-------------------------
delegate void b(int v);
void f(int v){};
b obj=new b(f);
//obj 是函数指针
-------------------------
2.事件就是委托多了个event关键字,你将event去掉,代码不会报错
3.接口是定义类时必须要定义的,不过在C#中,你不定义编译器帮你做了
4.接口是初始化"栈"的模板,"类实体"是初始化"堆"的模板
5.一个类指针由一组"函数指针"与"类指针组成"
6.委托就是函数指针,是面向对象内存实现的基石
第一种.类指针
-------------------------
class a{}
a obj =new a();
//obj 是类指针
-------------------------
第二种.函数指针
-------------------------
delegate void b(int v);
void f(int v){};
b obj=new b(f);
//obj 是函数指针
-------------------------
2.事件就是委托多了个event关键字,你将event去掉,代码不会报错
3.接口是定义类时必须要定义的,不过在C#中,你不定义编译器帮你做了
4.接口是初始化"栈"的模板,"类实体"是初始化"堆"的模板
5.一个类指针由一组"函数指针"与"类指针组成"
6.委托就是函数指针,是面向对象内存实现的基石
#9
非常感谢jointan,wxwinter的帮助,呵呵