C#Delegate(委托)小案例

3 篇文章 0 订阅
本文介绍了C#中的委托概念,包括如何定义和使用委托,展示了Action和Func委托类型的用法,并提供了一个小案例,演示如何通过委托实现字符串转换操作,如大小写转换和追加星号。
摘要由CSDN通过智能技术生成

委托:一种类型,表示方法引用的类型;一个委托是一个指向方法的引用,或者说,一个委托的实例就是一个指向某个方法的对象,这是一个简单却十分强的的概念

首先委托的定义格式

public delegate 返回值 Mydelegate(参数列表);

其实委托的定义和函数的定义差不多,就是委托多了一个deleagate关键字。

定义好了委托我们可以怎么使用呢?

         static void Add1(int a, int b)
        {
            Console.WriteLine(a+b);
        }

        static void Sub(int a, int b)
        {
            Console.WriteLine(a - b);

        }

        static string Print(int a)

        {

            renturn a.toString();

         }

   static string Print1(int b)

        {

            renturn b.toString();

         }

这是四个静态方法

我们可以使用 Mydelegate mydelegate = Sub; mydelegate(1,1)就调用了Sub方法

mydelegate(1,1) 和Sub(1,1)是一样的都是调用了Sub方法

这就是一个怎么使用委托的方法

还可以mydelegate += Add1;都是可以的

 

委托有两种类型

一种是Action无返回值,无参数列表的委托

 一种是Action<>无返回值,有参数列表的的委托类型

Func<T>是一种返回值为T类型的委托类型(T是泛型)

 

比如说可以 Action<int,int> add1 = Add1;

add1(1,2) ;

Func<int,stirng> add = Print; 第一个为int 类型的参数,第二个为返回值

add+=print1;

add(1);

要注意的是Func<T>返回值类型为T类型的委托类型,当Fun中委托对象指向了多个方法时,返回最后一个执行的方法

 

下面看一个小案例,输入一个字符串

要求1。将所有的大写字母变成小写

     2 。将所有的小写字母变成大些,

    3。将输入的字符串后面+*号

 static string ToUpper(string str)
        {
            return str.ToUpper();
        }

        static string ToLower(string str)
        {
            return str.ToLower();
        }

        static string ToStar(string str)
        {
            return str + "*";
        }

        static void Mydelegete(Func<string,string> func,string str)

        {

            Console.WriteLine(func(str));

        }

在Main函数中测试

Mydelegate(ToUpper, "abc");   //ABC

Mydelegate(ToLower, "ABC"); abc

Mydelegate(ToStar, "abc"); abc*

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值