zoukankan      html  css  js  c++  java
  • 面向对象——类库、委托

    一:类库

    引用别人写的类 

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

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

    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");
            }  
        }
  • 相关阅读:
    图,深度,广度优先遍历(一)
    java实现快速排序
    图,深度,广度优先遍历(二)
    图,深度,广度优先遍历(三)
    Jpa动态多表if多条件联合查询(if中包含list不为null和“=”的判断),并对查询结果进行分页
    SpringBoo启动报错:Failed to load property source from location ‘classpath:/bootstrap.yml‘
    Java对象创建和Javabean创建
    Linux解压命令
    BDD测试利器:mocha+should.js
    《老码识途》读书笔记:第一章(中)
  • 原文地址:https://www.cnblogs.com/jiuban2391/p/6106641.html
Copyright © 2011-2022 走看看