• C# 基础


    先看例子

     1  public delegate string DelString(string str);
     2 
     3 //方式1
     4  ProString(names, delegate(string str) { return str.ToLower(); });//匿名函数
     5 
     6   ProString(names, (str) => { return str.ToUpper(); });
     7 
     8             foreach (string item in names)
     9             {
    10                 Console.WriteLine(item);
    11             }
    12             Console.ReadKey();
    13 //下面的才是要委托的对象
    14 
    15   static void ProString(string[] names, DelString del)
    16         {
    17             for (int i = 0; i < names.Length; i++)
    18             {
    19                 names[i] = del(names[i]);
    20             }

    2. 泛型委托

      public delegate int DelCompare<T>(T o1, T o2);
    
    //第一种
      //  GetMax<int>()
    
    //第二种
     //List<int> list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    
                ////IEnumerable<int> item = list.Where<int>(n => { return n > 5; });
                ////foreach (var i in item)
                ////{
                ////    Console.WriteLine(i);
                ////}
    
    第三种
    
       //list.Where(n => { return n > 5; });
    
    第三种
     //List<int> list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    
                //list.RemoveAll(n => n > 5);
    
                //foreach (int item in list)
                //{
                //    Console.WriteLine(item);
                //}
    
                //Console.ReadKey();
    
    
    
    
    
    
     static T GetMax<T>(T[] nums, DelCompare<T> del)
            {
                T max = nums[0];
                for (int i = 0; i < nums.Length; i++)
                {
                    if (del(max, nums[i]) < 0)//需要传进来一个比较的方式
                    {
                        max = nums[i];
                    }
                }
                return max;
            }

    第三种窗体之间委托

    从窗体1===>先展示窗体2==>传值给窗体1

    1.先在窗体2中声明委托

     public delegate  void DelTest(string str);

     private DelTest _del;//存储Form1传送过来的函数

    2在窗体2中声明一个函数

    public Form2(DelTest del)
    {
    this._del = del;
    InitializeComponent();
    }

    3.清除窗体1中的东西

    private void button1_Click(object sender, EventArgs e)
    {
    this._del(textBox1.Text.Trim());
    }

    在窗体1中声明一个函数,在窗体1中调用

    //将Form2传送过来的数据 赋值给Label
    void ShowText(string str)
    {
    label1.Text = str;

    事件(和委托只是增加一个event 和+=)

    1.先写委托

    2.注册事件,声明事件不需要()

    3.调用事件

    sender是触发这个事件的对象

    e 就是执行这是事件所需要的数据资源

    TODO//后续

  • 相关阅读:
    让我自闭了两个星期的题 Hello xtCpc
    kmp 回忆训练2 poj3461
    kmp 字符串匹配
    线段树之动态开点  HDU 6183 Color it.
    两个思维
    codeforces 300E Empire Strikes Back
    codeforces1392 E Omkar and Duck
    codeforces1169D
    HDU4335 欧拉函数及降幂
    HDU2588GCD(欧拉函数)
  • 原文地址:https://www.cnblogs.com/liuweiqiang11188/p/6681360.html
Copyright © 2020-2023  润新知