zoukankan      html  css  js  c++  java
  • c#基础

      1. ref与out之间的区别:

        ref 传的参数必须要先初始化,out不必
        ref传进去的参数在函数内部可以直接使用,而out不可
        out必须在离开函数前赋值
      2. 装箱:
        对值类型在堆中分配一个对象实例,并将该值复制到新的对象中。按三步进行。
        第一步:新分配托管堆内存(大小为值类型实例大小加上一个方法表指针和一个SyncBlockIndex),SyncBlockIndex作用
        是指示线程同步状态
        第二步:将值类型的实例字段拷贝到新分配的内存中。
        第三步:返回托管堆中新分配对象的地址。这个地址就是一个指向对象的引用了。
        拆箱:
        检查对象实例,确保它是给定值类型的一个装箱值。将该值从实例复制到值类型变量中。
      3. 扩展方法:被定义为静态方法,它们的第一个参数指定该方法作用于哪个类型,并且该参数以this修饰符为前缀
      4. 静态类以static声明,指示它只包含静态成员,不包含构造函数,不能被继承可以有静态构造函数,不能有参数,只运行一次,用于初始化静态成员,但我们没法直接调用,而是调用时由CLR自动调用
      5. readonly:运行时常量,且只能定义类成员变量,可以根据上下文逻辑进行赋值,只能赋值常量
        const:编译时常量,编译时已确定
      6. c#结构体是值类型,特性如下:
        所有结构都从Object类派生,不能从其他类或者结构派生,也不能作为其他类或结构的基类。
        结构中的字段默认是私有的,并且结构的字段不能在声明时显示初始化。
        结构可以有一个或多个构造方法,但是不允许自己定义默认构造函数,而且编译器要求自定义构造函数都要初始化结构的所有字段。
        结构的默认构造函数将所有值类型的字段设为0,所有引用类型的字段设为空引用
      7. try中有return语句,finally中的语句也会执行,在return后运行
      8. c# 声明了abstract方法的类必须是abstract 方法,abstract方法必须没有实现且必须被继承类实现
      9. virtual 关键字用于修饰方法、属性、索引器或事件声明,并使它们可以在派生类中被重写,virtual方法必须有实现,virtual 修饰符不能与 static、abstract, private 或 override 修饰符一起使用
      10. Action:无返回值类型的泛型委托
        Func:有返回值类型的泛型委托,最后一个参数是返回类型
        Predicate:返回bool型的泛型委托
      11. params指定可变参数,方法声明中只允许一个params关键字,之后不能再有参数
      12. 泛型中的静态成员在相同封闭类间共享,在不同封闭类间不共享,例如下面a和b是相同封闭类型,与c不是
        stack<int> a = new stack<int>();   stack<int>b= new stack<int>();   stack<long> c= new stack<long>();
        当一般方法与泛型方法具有相同签名时会覆盖泛型方法,泛型参数可以有约束
      13. 应用程序域:在一个进程中可以包含多个应用程序域,一个应用程序域可以装载一个可执行程序(*. e xe )或者
        多个程序集(*.dll)。这样可以使应用程序域之间实现深度隔离,即使进程中的某个应用程序域出现错误,也不会影响
        其他应用程序域的正常运作。
      14. 类继承了INotifyPropertyChanged,类中的属性如果跟控件绑定了, 那么PropertyChanged事件 属性就会被自动
        赋值,属性变了后可以出发PropertyChanged事件
      15. interface IEqualityComparer<in T>接口:用于自定义对于集合的相等比较,也就是说对于类型T你可以创建自己的相等定义.此接口仅支持相等比较.EqualityComparer<T>为IEqualityComparer<T>接口的抽象类实现,建议从EqualityComparer<T>类派生,而不是实现IEqualityComparer<T>接口,因为EqualityComparer<T>类使用IEquatable<T>.Equals方法而非Object.Equals方法测试相等性.

        interface IComparer<T>:用于自定义对于集合的排序方法,允许自定义筛选和排序比较,此接口由List<T>.Sort和List<T>.BinarySearch方法使用,实现此接口的类包括SortedDictionary<TKey,TValue>和SortedList<TKey,TValue>泛型类,建议从Comparer<T>类派生,而不是实现IComparer<T>接口,因为Comparer<T>类提供IComparer.Compare方法的显示接口实现和获取泛型参数指定的类型的默认排序比较器的Default属性

        interface IComparable接口:此接口由具有可排序之的类型实现,用于定义特定于类型的通用比较方法,实例的IComparable实现由Array.Sort和ArrayList.Sort等方法自动调用
  • 相关阅读:
    git的简单操作
    angularjs的基础
    针对IE8透明度设置及一些简单的兼容问题
    sublime 部分常用的快捷键
    Linux简单的操作
    AngularJS 简单的介绍
    html5的viewport与css3的媒体查询
    css的优先级的相关内容
    (转) vmware 切换桥接模式
    从nginx的编译安装,了解编译安装原理(转)
  • 原文地址:https://www.cnblogs.com/phenixyu/p/3967136.html
Copyright © 2011-2022 走看看