关于c#:委托与事件的定义与用法

1次阅读

共计 1162 个字符,预计需要花费 3 分钟才能阅读完成。

1. 委托

1.1 定义及应用

委托是一种动静调用办法的类型,它与类、接口和数组雷同属于援用型。

注意事项:
委托实际上定义了一种办法的模板,只有返回值类型和形参列表与该模板统一,就都可用该委托类型进行实例化。

委托对象实质上代表了办法的援用。在.NET Framework 中, 委托具备以下特点。
(1) 委托相似于 C++ 函数指针, 但与指针不同的是, 委托是齐全面向对象的、平安的数据类型。
(2) 委托容许将办法作为参数进行传递。
(3) 委托可用于定义回调办法。
(4) 委托能够把多个办法连贯在一起, 这样在触发事件时, 可同时启动多个事件处理程序。

委托(delegate)申明的个别模式:
[拜访修饰符] delegate 返回值类型 委托名([参数列表]);
如:public delegate int Do(int x);
下面的语句申明了一个公开的名为“Do”的委托,该委托返回值类型为整型。
例如:public delegate void wt(int x);
定义一个没有返回值、带有整型参数的 x 的一个名叫 wt 的委托。

具体怎么应用接下来看看代码示例:

namespace C 练习  
{public  delegate void wt(int x);
    class Program
    {public static void Add(int x)  // 定义了一个静态方法 Add,留神该办法的返回值类型和参数与委托的雷同
        {Console.WriteLine(x+x); // 输入 x + x 的值
        }
        public static void Cheng(int x)// 同上
        {Console.WriteLine(x*x);
        }
        static void Main(string[] args)
        {
            wt j = Add;  // 用委托定义 j 并调用 Add 办法
            j += Cheng; //+ 代表在 j 的根底上增加 Cheng 办法
            j -= Cheng;//- 代表在 j 的根底上移除 Cheng 办法
            j(3);
        }
    }
}

那么输入的后果就为:6

1.2 匿名办法:

将代码块作为参数传递,防止独自定义方法。
委托类型 委托变量名 =deletate (){};

namespace C 练习
{public  delegate void wt(string name);
    class Program
    {static void Main(string[] args)
        {wt wt1 = delegate (string name)
              {Console.WriteLine("{0}, 我是匿名办法。", name);
              };
            wt1("张三");
        }
    }
}

2. 事件

namespace C 练习
{public  delegate void wt(int x);
    public static void Add(int x)
    {Console.WriteLine(x+x);
    }
    public static event wt sj;
    static void Main(string[] args)
    {
            sj += Add;
            sj(8);
    }  
}
正文完
 0