zy74_C#委托(Delegate);定积分程序

1.理解委托(Delegate)

将一个函数作为另一个函数的参数

定义时保持与想代替方法的参数返回类型一样

delegate void AnimalPlay(string name);
static void DogAct(string name)

委托对象需要申明等于哪一个方法

AnimalPlay deleDogPlay = new AnimalPlay(DogAct);
AnimalPlay deleDogPlay = DogAct;
deleDogPlay("Snoopy1");

完整程序

delegate void AnimalPlay(string name);
internal class Program
{
    static void RunCircus(AnimalPlay animalPlay,string name)
    {
        animalPlay(name);
    }

    static void Main(string[] args)
    {
        //AnimalPlay deleDogPlay = new AnimalPlay(DogAct);
        AnimalPlay deleDogPlay = DogAct;
        deleDogPlay("Snoopy1");
        RunCircus(deleDogPlay, "Snoopy");
        RunCircus(LionAct, "Tiger");
    }
    static void DogAct(string name)
    {
        Console.WriteLine("Hello,I'm"+name+"!");
        Console.WriteLine(@"
        Wone
      ............");
    }
    static void CatAct(string name)
    {
        Console.WriteLine("Hello,I'm" + name + "!");
        Console.WriteLine(@"
        Meow
      ............");
    }
    static void LionAct(string name)
    {
        Console.WriteLine("Hello,I'm" + name + "!");
        Console.WriteLine(@"
        Oi
      ............");
    }
}

2.程序设计

定积分实例

internal class Program
{
    //被积函数
    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 = F2;
        double result1 = DefiniteIntegrate(1, 5, f1);
        double result2 = DefiniteIntegrate(1, 5, F1);
        double result3 = DefiniteIntegrate(0, 1, f2);
        double result4 = DefiniteIntegrate(0, 1, F2);

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


        Console.WriteLine("{0},\n{1},\n{2},\n{3}", result1,result2,result3,result4);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值