面向对象——类库、委托

一:类库

引用别人写的类 

其实就是一堆类文件,只不过你看不到这些类的源代码,保密性好。

优点:保密性好
缺点:如果这个方法不好用,使用者无法自己去更改它。

1、源代码方法

可以将直接写好的.cs源代码文件,添加进我的解决方案文件夹下,在解决方案资源管理器中, 项目上右键→添加→现有项,来添加此.cs源代码文件的使用,需要引入相应的命名空间

2、类库方法

      一个dll文件,就是一个类库 它人新建一个类库,在里面编写类和相应的方法,生成后出现一个dll文件,拿过来,放在自己的 程序文件夹里,在项目右键→添加引用→找到此dll类库文件添加,然后引用命名空间,就可以调用相应的类中的方法了

意类一定要是public访问权限
      类库使用是多公司联合开发时使用的方式,因为每个公司都有自己的核心技术,我允许你使用,但不允许你 知道我是怎么编写的,所以需要dll类库文件,因为dll文件是将源代码文件编译后的文件,看不到源代码, 所以你只能调用不允许更改

二:委托

委托:
也称为代理,事件也是一种委托;
定义在类的最外面

1、定义委托
关键字:delegate
函数签名:签名和函数保持一致
定义委托的时候要根据函数来定义
public delegate int First(int a,int b);
指向的方法的返回类型,需要参数必须一致!

2、定义委托变量,指向方法

委托不能被实例化,因为不是类;

First f = new JiaFa; //新建委托变量,指向方法,注意!!方法不需要小括号!!

第二次可以使用+=

public int JiaFa(int a,int b)
{
return a+b;
}

调用:
f(5,3);

可以理解为函数的指针,委托指向哪个函数,则这个委托就代表哪个函数
可以让函数当做参数一样进行传递

//定义委托
    public delegate void SuiBian(string s);

    class Program
    {
        static void Main(string[] args)
        {
            //委托
            //把方法参数化
            SuiBian s = China;

            s += America; //+=是绑定方法,将两个委托的调用列表连接在一起  -=去掉一个方法    =是替换


            //调用语音方法
            Speak(s);

          
            Console.WriteLine();
            Console.ReadLine();

        }

        //语音功能的方法
        static void Speak(SuiBian yu)
        {
            yu("张三");
            //if (n == 0)
            //{
            //    America();
            //}
            //else if (n == 1)
            //{
            //    China();
            //}
            //else if (n == 2)
            //{
            //    HanYu();
            //}
            //America();
            //China();
        }

        //语音包
        public static void America(string s)
        {
            Console.WriteLine(s+"hello");
        }
        static void China(string s)
        {
            Console.WriteLine(s+"你好");
        }
        static void HanYu(string s)
        {
            Console.WriteLine(s+"bjdkaj");
        }  
    }
原文地址:https://www.cnblogs.com/jiuban2391/p/6106641.html