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//后续

原文地址:https://www.cnblogs.com/liuweiqiang11188/p/6681360.html