c#简单的用方法当作参数传递给方法(委托)实例

c#简单的用方法当作参数传递给方法(委托)实例,第1张

前言

记录下学习C#的过程。


一、需求

下边的类(say)中有三个方法,需要给这三个方法统一的添加同一个条件语句。
想过在每一个方法内做判断,但是考虑这条太不“程序员”了,所以考虑用一个新的方法来代替,用委托的方式传递参数。

public class say {

        public static void A()
        {

            Console.Write("我是A"+ "\n");

        } 
        public static void B()
        {

            Console.Write("我是B" + "\n");

        } 
        public static void C()
        {

            Console.Write("我是C" + "\n");

        }
二、实现

考虑用委托的形式实现该功能,即新建一个判断的类(也可写成类库)

 class Panduan
    {
        public static void panduan(bool a,Action act)//传递委托
        {
            if (a)
            {
                act();
            }
            else
            {
                Console.WriteLine("no!!");
            }
        }
    }
三、完成代码
class Program
    {
        public static bool a = true;
        static void Main(string[] args)
        {
            Panduan.panduan(a, say.A);
            Panduan.panduan(a, say.B);
            Panduan.panduan(a, say.C);
            Console.Read();
        }
    }

    class Panduan
    {
        public static void panduan(bool a,Action act)
        {
            if (a)
            {
                act();
            }
            else
            {
                Console.WriteLine("no!!");
            }
        }
    }
    public class say {

        public static void A()
        {

            Console.Write("我是A"+ "\n");

        } 
        public static void B()
        {

            Console.Write("我是B" + "\n");

        } 
        public static void C()
        {

            Console.Write("我是C" + "\n");

        }
    }

总结

这类应用类似于python的装饰器,不过我查资料C#的装饰器比python的复杂多。
上边的例子相当于给方法运行前增加权限。
参考文件内详细讲解了action和func的委托应用,简单易懂,非常值得学习。


参考文件

https://blog.csdn.net/wf824284257/article/details/83661843

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/797934.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存