• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C#托付之愚见

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
C#托付起源
近期參加实习和奔走于各大招聘会,被问及非常多技术方面的问题。C#问的较多的就是托付和linq。

linq之前已经写过一篇文章,能够參见
http://blog.csdn.net/yzysj123/article/details/38778371。

这里讲讲C#为什么用托付和什么是托付。学习过C++的都知道,C++的指针非常的灵活好用。但又给编程人员带来了非常多头痛,如野指针问题等。

而C#就遗弃了指针,但对应的功能通过了其它方式来实习,如C++中指针变量、引用,C#里面能够通过ref。out等实现。C++中的指针函数。C#则能够通过托付来实现。详细看例如以下样例。

#include <string.h>  
#include <stdio.h>  

  
int funcA(int a,int b);  
int funcB(int a,int b);  
int  main(int argc, char *argv[])  
{  
    int (*func)(int,int);  
    func = funcA;  
    printf("%d\n",func(10,1));  
    func = funcB;
    printf("%d\n",func(10,1)); 
      
}  
  
int funcA(int a,int b)  
{  
    return a + b;  
}  
  
int funcB(int a,int b)  
{  
    return a - b;
}  
以上就是通过C++一个指针函数能够调用其它同样參数类型的多个函数。

而C#中托付的功能,也能够看作是对C++这样的功能的实现。详细代码例如以下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace weituo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 声明托付变量
            ProcessDelegate process;
            Console.WriteLine("请输入用逗号分隔的两个数字:");
            string input = Console.ReadLine();
            int commaPos = input.IndexOf(',');
            double param1 = Convert.ToDouble(input.Substring(0, commaPos));
            double param2 = Convert.ToDouble(input.Substring(commaPos + 1,input.Length - commaPos -1));
 
            Console.WriteLine("输入M乘法D除法</a>");
            input =Console.ReadLine();
 
            // 初始化托付变量
            if(input =="M")
                process = new ProcessDelegate(Multiply);
                //凝视:此处也能够写process = Multiply
            else
                process = new ProcessDelegate(Divide);
 
            // 使用托付调用函数
            double result = process(param1,param2);
            Console.WriteLine("结果:{0}",result);
            Console.ReadKey();
 
        }
 
        // 声明托付
        delegate double ProcessDelegate(double param1,double param2);
        static double Multiply(double param1, double param2)
        {
            return param1 * param2;
        }
 
        static double Divide(double param1, double param2)
        {
            return param1 / param2;
        }
 
    }
}





鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#xml注释发布时间:2022-07-10
下一篇:
C#3.0新增功能09 LINQ 基础08 支持 LINQ 的 C# 功能发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap