首 页IT知识库收藏内容
当前位置:翔宇亭IT乐园IT知识库C#C#基础

C#中的委托

减小字体 增大字体 作者:不详  来源:转载  发布时间:2010-09-07 07:07:00

C# 和.NET的委托(delegate)与C/C++中的回调函数类似,但是委托比函数指针更安全。因为回调函数只是一个指向存储函数体的内存指针,无法知晓函数的形参和返回类型,也不能保证指针所指的内容一定是所需要的函数体。

当需要将函数作为参数来传递时,才需要函数指针和委托。主要用于启动线程、编写通用类库和事件处理。

C# 中委托的声明格式为:

[[属性]] [委托修饰符] delegate 返回类型 标识符 [<类型参数, …>] (形参列表) [where 类型参数 : 类型参数约束[, …] ……];

其中,委托修饰符有:new、public、protected、internal、private,及它们的有效组合。与常量修饰符的相同。例如:

delegate int D1(int i, double d);

class A {
                public static int M1(int a, double b) {…}
        }

class B {
                delegate int D2(int c, double d);
                public static int M1(int f, double g) {…}
                public static void M2(int k, double l) {…}
                public static int M3(int g) {…}
                public static void M4(int g) {…}
                delegate object D3(string s);
                public static object M5(string s) {…}
                public static int[] M6(object o) {…}
        }

委托的使用方法参见下例:

delegate void D(int x);

class Test {
                public static void M1(int i) {…}
                public void M2(int i) {…}
        }

class Demo {
                static void Main() {
                        D cd1 = new D(Test.M1); // 静态方法
                        Test t = new Test();
                        D cd2 = new D(t.M2); // 实例方法
                        D cd3 = new D(cd2); // 另一个委托
                }
        }


本文源自:翔宇亭——IT乐园(http://www.biye5u.com),转载请保留此信息!

微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。

个人成长离不开各位的关注,你的关注就是我继续前行的动力。

Tags:委托 C#

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
愿您的精彩评论引起共鸣,带来思考和价值。
用户名: 查看更多评论
分 值:100分 90分 80分 70分 60分 40分 20分
内 容:
验证码:
关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图
本站部分内容来自互联网,如有侵权,请来信告之,谢谢!
Copyright © 2007-2024 biye5u.com. All Rights Reserved.