zoukankan      html  css  js  c++  java
  • 委托事件调用的几种方式

    //事件基本调用。事件是种特别的委托
    //this.button1.Click+=new EventHandler(btnclick);
    //匿名方法
    this.button1.Click+=delegate(object sender,EventArgs e){};

    //委托
    public delegate void eve(object sender,EventArgs e);

    //1.0 把委托对向指向方法
    //方法1
    eve event1 = a;
    //方法2,方法传参实例化委托对象
    eve event2 = new eve(a);

    //2.0 匿名,不需要方法声明,编译自动声明
    eve event3 = delegate(object sender, EventArgs e) { };

    //3.5 lambda
    // (参数) => { 方法体}; 自动作了return
    eve event4 = (send, e) => { };

    委托链

    //方法内容: 实例委托对向,方法加入委托,直接调委托对象
    public void calldelegate() {

    //普通实例
    eve delemodel = a;

    //多播 添加事件,成为链。
    //PS,如果有反回值,那么反回的是最后一个事件的值。
    //1
    eve del = a;
    del += b;
    //
    del -= b;
    del -= b;

    //2 合并委托链,事件不可直接+ 委托可以直接+,所以,可以把事件放入委托中再相加。
    eve event1 = a;
    eve event2 = b;
    eve event3 = event1 + event2;


    //执行委托
    delemodel(new object(),new EventArgs());
    //委托对象,可作为参数传递
    }

    public bool findmethod(Book obj)
    {
    return obj.Title == "as";

    }

    public void listSelect() {
    //实例化对象
    List<Book> blist = new List<Book>();

    //想试试 List<Book>() 加不加()的区别
    List<Book> blistautotest = new List<Book>() { new Book("ba"), new Book("bb") };

    List<Book> blistautotest2 = new List<Book> { new Book("ba"), new Book("bb") };


    //List<Book> blistauto = new List<Book> { new Book { Title = "ba" }, new Book() { Title ="2"} };

    //调委托
    //这种错误很典型 return book.Title = "ba"
    //blistautotest2.Find(delegate(Book book) { return book.Title = "ba"; });

    //Find里委托中的 return 是反回子对象BOOK, return 后跟判断条件。
    // 如果 obj 符合由此委托表示的方法中定义的条件,则为 true;否则为 false。 return后的值必须能得出bool类型

    IEnumerable<int> a;

    //委托
    blistautotest2.Find(findmethod);
    //
    blistautotest2.Select<Book, Book>(delegate(Book bk1) { return bk1; });

    blistautotest2.Select(ba => ba.Title=="aa");
    // 匿名委托
    blistautotest2.Find (delegate(Book book) { return book.Title == "ba"; });
    //labda
    blistautotest2.Find(p => p.Title == "");

    blistautotest2.Select(p => p.Title = "ba");

    }

  • 相关阅读:
    手动创建DataSet数据集
    Ado.Net 参数化操作
    序列化和反序列化
    封装多个集合在一个类中
    窗体之间的传递
    C程序设计语言练习题1-12
    C程序设计语言练习题1-11
    C程序设计语言练习题1-10
    C程序设计语言练习题1-9
    C程序设计语言练习题1-8
  • 原文地址:https://www.cnblogs.com/zihunqingxin/p/3202375.html
Copyright © 2011-2022 走看看