• DotNet知识点五


    1、委托:通常指的是 多播委托
      通常的说,委托就是一个存放方法指针的容器,是一个安全的函数指针,供程序员安全调用。委托的本质就是一个类,继承于MulticastDelegate——>Delegate,在Delegate类中有一个IntPtr类型的变量来指向该方法的指针。

      通常当方法传递的参数为一个方法时,就用委托。

      委托能够将方法作为参数传递,(多播委托)调用一个委托,执行N个方法

    2、集合排序
      1.Reverse()方法直接反转排序

      2.冒泡排序

    复制代码
    int temp = 0;
    for(int i = 0; i < arr.length; i++)
    {
    for(int j = i+1; j < arr.length; j++)
    {
    if(arr[i] < arr[j])
    {
    temp = arr[i] ;
    arr[i] = arr[j];
    arr[j] = temp;
    }
    }
    }
    复制代码
    3、匿名方法
        并不是真的没有名字,它在CLR编译时会产生一个临时方法名。匿名方法产生后,方法指针会存放在委托变量中,供程序调用

    4、多播委托
      1.可以向委托上注册多个方法(+=)

      2.也可以从委托上移除已注册的方法(-=)

      3.如果委托上注册了多个有返回值的方法,那么调用之后委托返回的是最后一个方法的返回值

    5、事件
      事件的本质就是提供了一个Add和Remove方法的委托对象(编译后生成了一个私有的委托对象,同时又为该委托对象提供了一个add(+=)和一个remove(-=)方法)

      事件的内部机制就是创建一个私有的委托对象,同时又为该委托对象提供了一个add(+=)和一个remove(-=)方法,让程序员只有 += 和 -= 的操作

    6、委托和事件的区别
      委托和事件没有可比性,因为委托是类型,事件是对象,下面说的是委托的对象(用委托方式实现的事件)和(标准event方式实现)事件的区别。

      事件的内部是用委托实现的,因为对于事件来讲,外部只能“注册自己+= 注销自己-=”,外界不可以注销其他的注册者,外界不可以主动触发事件,因此如果用Delegate就没法进行上面的控制,因此诞生了事件这种语法。事件是用来阉割委托实例的,类比用一个自定义类阉割的List。事件只能add、remove自己,不能赋值。事件只能 += 、 -=,不能=

      事件的简单使用:

    复制代码
    delegate void MyDelegate(string name);
    class Program
    {
    static event MyDelegate myEvent;
    static void Main(string[] args)
    {
        myEvent += new MyDelegate(Program_myEvent);
    Console.ReadKey();
    }
    static void Program_myEvent(string name)
    {
        throw new NotImplementedException();
    }
    }
    复制代码
    7、三层架构
      什么是三层架构?

        通常意义上的三层架构就是将这个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)

      三层架构的目的

        为了”高内聚,低耦合“的思想,增强项目的可扩展性

      具体三层:

        表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候的所见所得。比如说我们打开电脑所看到的桌面。

        业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据库层的操作,对数据业务逻辑进行处理

        数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增删查改等

      三层之间的关系:

        是一种垂直的关系。三层结构是N层架构的一种,一般来说,层次之间是向下依赖的,下层代码未确定其接口(规则)前,上层代码是无法开发的,下层代码接口的变化将使上层的代码一起变化

      三层架构的优缺点:

        优点:分工明确,条理清晰,易于调试和维护,而且具有可扩展性

        缺点:增加成本

  • 相关阅读:
    eclipse的下载安装
    找不到符号 类string
    [转]Android_开源框架_AndroidUniversalImageLoader网络图片加载
    [转]移动web开发经验总结
    测试一下吧
    javascript 的 encodeURIComponent 函数用 Objective-C 实现
    几个Objective-C的HTML解析库
    html test
    一段测试代码
    [转]Embed WebView in Fragment
  • 原文地址:https://www.cnblogs.com/Mr-Prince/p/12104655.html
Copyright © 2020-2023  润新知