C#委托 泛型 事件 装箱拆箱

一、委托
我感觉的委托就是指一个函数指针,指向被委托的方法,在定义的时候把返回值类型与参数全部定义好,创建的实例相当于一个指向被委托函数的指针,然后将需要的数据通过委托传进去
是先调用委托实例,然后委托实例再调用方法
简写的那种方式更能体现它像一个函数指针
注意:
多播委托就是用+=与-=进行操作 当多播委托的返回值类型不是void时 会从最后一个被调用的方法那接收返回值。
下面是例子:

 class Program
    {
     
        delegate int Delegate(int a, int b);
        static void Main(string[] args)
        {
     
            Delegate @delegate = Add;
            @delegate(1, 2);
        }

        static int Add(int a,int b)
        {
     
            return a + b;
        }


    }

二、泛型
在要处理的数据类型不同但是算法相同的时候用到泛型。
可以泛型类也可以泛型方法
对于泛型类:

class fanxing<T>
{
     
    public T a {
      get; set; }
}

使用的时候是这个样子的:

fanxing<int> fanXing = new fanxing<int>();
fanXing.a = 1;

对于泛型方法:

void FanXing<T>(T a,T b)
{
     
      //要实现的业务逻辑
}

使用时候的样子:

FanXing<int>(1, 2);

对于泛型接口:

interface IMyInterface<T>
{
     
    void Myinterfacce(T a);
}

使用的时候:

class MyClass<T>:IMyInterface<T>
{
     
    public void Myinterfacce(T a)
    {
     
        //业务逻辑
    }

}

三、有一种委托叫泛型委托
1.Func
2.Action
四、装箱和拆箱
数据类型分为值类型与引用类型 值类型在栈中分配内存而引用类型在堆中分配内存
装箱是将值类型转换成引用类型
拆箱是将引用类型转换成值类型
在调用含有object类型的方法时 传入值类型的数据会进行装箱,在这个方法之中处理这个数据会发生拆箱
装箱:

int a = 1;
object obj = a;

拆箱:

int b = (int)obj;

四、事件
事件实现的功能是通知和可选的事件参数
比如手机响了,这个就是通知,而事件参数就是某个应用的推送消息。
事件有事件的拥有者:比如手机
事件成员:比如响声
事件的响应者:比如人
事件处理器:比如人对手机的各种操作
事件订阅:把人和手机关联在一起
事件订阅的操作符是+= 这里一定要匹配 所以可以先在订阅的时候写好方法名,然后再自动生成。

你可能感兴趣的:(笔记,c#)