欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

我爱学习第一天(委托)

程序员文章站 2022-04-29 14:27:17
恢复内容开始 1.delegate 一般用法 delegate void WriteValue(string vale);//申明一个委托,参数是string类型,无返回值 static void Main(string[] args) { WriteValue write = new WriteV ......

---恢复内容开始---

1.delegate

一般用法

 delegate void writevalue(string vale);//申明一个委托,参数是string类型,无返回值
        static void main(string[] args)
        {
            writevalue write = new writevalue(writeline);//实例化委托
            write("喝水");//调用
            console.readkey();

        }

        public static void writeline(string value) {
            for (int i = 0; i < 5; i++)
            {
                console.writeline("第{0}次{1}", i, value);

            }
        }

 

匿名委托

 delegate void writevalue(string vale);
        static void main(string[] args)
        {
            writevalue write = delegate (string value) { console.write(value); };
            write("喝水");
            console.readkey();

        }

 

使用lambda表达式

如需要传入多个参数,需要用"()"将参数包括起来,用","隔开.

  delegate void writevalue(string vale,string value1);
        static void main(string[] args)
        {
            writevalue write = (value,value1) => { console.write(value);console.write(value1); };
            write("喝水","吃饭");
            console.readkey();

        }

 

多播委托

 delegate void writevalue(string value);
        static void main(string[] args)
        {
            writevalue value1 = new writevalue(write);
            value1 += new writevalue(writeline);
            value1("s");
            console.readkey();

        }

        public static  void writeline(string value) {
            console.writeline("帮我倒杯卡布奇洛,谢谢");
        }

        public static void write(object value) {

            console.writeline("多加点糖,谢谢");
        }

 

2.func<t,e>

t表示参数类型,e表示返回值类型. func<t1,t2,t3,e>表示有三个参数,类型分别为t1,t2,t3,返回值为e,以此类推.func<e>表示没有参数,返回值类型为e.

delegate void writevalue(string value);
        static void main(string[] args)
        {
            func<string, int> func = length;

            console.writeline(func("哈哈哈"));
            console.readkey();

        }
        public static int length(string value) {
            return value.length;
        }

 

3.action<t>

action<t1,t2,t3>表示有三个参数,无返回值,以此类推.

static void main(string[] args)
        {
            action<string, string> action = length;
            action("吃饭饭", "喝水水");
            console.readkey();

        }
        public static void length(string value,string value1) {
            console.writeline(value);
            console.writeline(value1);
        }

 

4.predicate<t>:表示定义一组条件并确定指定对象是否符合这些条件的方法。该委托返回的是一个bool类型的值,如果比较满足条件 .只能有一个参数.

 static void main(string[] args)
        {
            predicate<int> predicate = max;
            console.writeline(predicate(12).tostring());
            console.readkey();

        }
        public static bool max(int value) {
            return value > 0;
        }

 

 

 

---恢复内容结束---