WEB开发网
开发学院软件开发C语言 [叩响C#之门]写给初学者:委托的概念 阅读

[叩响C#之门]写给初学者:委托的概念

 2010-09-30 20:56:41 来源:WEB开发网   
核心提示: 下面我们利用委托的通用性设计一个通用的求定积分的函数,数得形式传递给定积分函数,[叩响C#之门]写给初学者:委托的概念(3),所以需要利用委托实现,请新建一个名为“Integral”的项目,列表中包含着被委托函数的引用,与C++的函数指针相比,然后添加如下代码, 试一试:

下面我们利用委托的通用性设计一个通用的求定积分的函数。

[叩响C#之门]写给初学者:委托的概念

数得形式传递给定积分函数,所以需要利用委托实现。

请新建一个名为“Integral”的项目,然后添加如下代码。 

试一试:求定积分

      //被积函数
        static double F1(double x)
        {
            return 2*x+1;
        }

        //被积函数
        static double F2(double x)
        {
            return x * x ;
        }


       //被积函数的委托
        delegate double Integrand(double x);

        //函数:定积分
        static double DefiniteIntegrate(double a, double b, Integrand f)
        {
            const int sect = 1000;         //分割数目
            double delta = (b - a) / sect;
            double area = 0;

            for (int i = 1; i <= 1000; i++)
            {
                area += delta * f(a + i * delta);
            }

            return area;
        }

        //进行定积分运算
        static void Main(string[] args)
        {
            Integrand f1 = new Integrand(F1);
            Integrand f2 = new Integrand(F2);

            double result1 = DefiniteIntegrate(1, 5, f1);
            double result2 = DefiniteIntegrate(0, 1, f2);

            Console.WriteLine("result1 = {0}", result1);
            Console.WriteLine("result2 = {0}", result2);
        }

[叩响C#之门]写给初学者:委托的概念

只需传给定积分函数DefiniteIntegrate()相应的被积函数,就可计算出任何函数的定积分。

综上所述,利用委托可以实现以函数为参数,提高程序的通用性。委托用关键字的delegate声明,实际上创建一种委托相当于创建一个从System.Delegate派生出来的类,类中有一个调用列表,列表中包含着被委托函数的引用。与C++的函数指针相比,委托是一种类型安全的方式。

上一页  1 2 3 

Tags:叩响 写给 初学者

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接