C#学习之委托(1)

委托是寻址方法的.NET版本,委托是类型安全的类,它定义了返回类型和参数类型,委托类不仅包括对方法的引用,也可以包括对多个方法的引用。以前定义的对象都包含数据,而委托包含的是一个方法或多个方法的引用。

声明委托
使用委托时,首先需要定义要使用的委托,对于委托定义它就是要告诉编译器这种类型的委托表示哪种类型的方法,然后必须常见这个委托的一个或者多个实例。定义委托的语法如下:
delegate void IntMethodInvoker(int x);
下面展示一个简单的委托实例
文件1 MathTool.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class MathTool
    {
        public static double MutipleByTwo(double x)
        {
            return x * 2;
        }
        public static double square(double x)
        {
            return x * x;
        }
    }
}
文件2 program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        delegate double doubleOp(double value);
        static void Main(string[] args)
        {
            doubleOp[] operations = {MathTool.MutipleByTwo,MathTool.square};
            double a = 2.0;
            double b = 1.32;
            for (int i = 0; i < operations.Length; i++)
            {
                Console.WriteLine("Using operation {0}", i);
                Console.WriteLine("value is {0},the result is {1}",a,operations[i](a));
                Console.WriteLine("value is {0},the result is {1}", b, operations[i](b));
                Console.WriteLine();
            }
            Console.ReadKey();
        }
    }
}


这段代码中,实例化了一个委托数组doubleOp(一旦定义了委托类,基本上就可以实例化它的实例,就像处理一般类那样,所以把一些委托的实例放在数组当中是可以的。)该数组的每个元素都初始化为由MathTool类实现的不同操作,然后遍历这个数组,把每个操作应用到不同的值上。就具体而言,这里operations[i]表示“这个委托”,也就是委托所表示的方法,要么是MutipleByTwo,要么是Square方法;而operations[i](a)表示的就是调用了operations[i]的这个方法,同时向里面传入了一个参数a。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值