C函数指针和C#委托

C语言代码:

C代码

//声明整数相加函数
int add_int(int a, int b)
{
    return a + b;
}

//声明浮点数相加函数
float add_float(float a, float b)
{
    return a+b;
}

//定义函数指针类型
typedef int (*int_add_funtion)(int a,int b);

//定义函数指针类型
typedef float (*float_add_funtion)(float a , float b);

int main()
{
    //声明一个函数指针,名字叫做int_add_fun,相当于创建int_add_funtion这个类型的实例,下同
    int_add_funtion int_add_fun;

    //声明一个函数指针,名字叫做float_add_fun
    float_add_funtion float_add_fun;

    //将该函数指针指向 整数相加函数 的入口地址
    int_add_fun = add_int;

    //将该函数指针指向 浮点数相加函数 的入口地址
    float_add_fun = add_float;

    //以常规方式调用 整数相加函数,打印出100+200的计算结果
    printf("%d/n", add_int(100,200));

    //用函数指针调用 整数相加函数,打印出100+200的计算结果
    printf("%d/n", (*int_add_fun)(100,200));

    //以常规方式调用 浮点数相加函数,打印出100.32 + 324.54的计算结果
    printf("%f/n", add_float(100.32f, 324.54f));

    //用函数指针调用 浮点数相加函数,打印出100.32 + 324.54的计算结果
    printf("%f", (*float_add_fun)(100.32f, 324.54f));

    return 0;
}


c# 代码

using System;
using System.Collections.Generic;
using System.Text;

namespace DelegateTest
{
    class Program
    {
        //声明整数相加函数
        static int add_int(int a, int b)
        {
            return a + b;
        }

        //声明浮点数相加函数
        static float add_float(float a, float b)
        {
            return a + b;
        }

        //定义委托类型
        delegate int int_add_funtion(int a, int b);

        //定义委托类型
        delegate float float_add_funtion(float a, float b);

        //程序主入口函数
        static void Main(string[] args)
        {
            //声明一个委托,即创建int_add_funtion这个委托类型的实例
            int_add_funtion int_add_fun;

            //声明一个委托,即创建float_add_funtion这个委托类型的实例
            float_add_funtion float_add_fun;

            //将委托指向整数相加函数
            int_add_fun = add_int;

            //将委托指向浮点数相加函数
            float_add_fun = add_float;

            //以常规方式调用 整数相加函数,打印出100+200的计算结果
            Console.WriteLine(add_int(100, 200));

            //用委托调用 整数相加函数,打印出100+200的计算结果
            Console.WriteLine(int_add_fun(100,200));

            //以常规方式调用 浮点数相加函数,打印出计算结果
            Console.WriteLine(add_float(100.123f, 200.423f));

            //用委托调用 浮点数相加函数,打印出计算结果
            Console.WriteLine(float_add_fun(100.123f, 200.423f));

            Console.Read();
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值