• C#基础知识


    1.关于位移运算符:

     1  1 int i=16;
     2  2 
     3  3 int m=i>>1;
     4  4 
     5  5 Console.WriteLine(i);    //  得到m=8;
     6  6 
     7  7  
     8  8 
     9  9 int j=2;
    10 10 
    11 11 int n=j<<2;
    12 12 
    13 13 Console.WritLine(j);    //  得到n=8;
    14 14 
    15 15  
    16 16 
    17 17 byte k=247;
    18 18 
    19 19 byte x=(byte)~k;           // ~表示取补,一个byte是255
    20 20 
    21 21 Console.WriteLine(x);   //  得到x为8;

    2. 冒泡排序:

     1 for(int i=0;i<array.Length-1;i++){    //  外部循环表示循环的次数
     2 
     3     for(int j=0;j<array.Length-1-i;j++){  //  内部循环表示比较的次数
     4 
     5     if(array[i]<array[j]){
     6 
     7                 int temp=array[j];    //  替换值
     8 
     9       array[j]=array[i];
    10 
    11       array[i]=temp;
    12 
    13     }  
    14 
    15   }
    16 
    17 }
    18 
    19 //  数组的遍历
    20 
    21 for(int i=0;i<array.Length;i++){
    22 
    23   Console.WriteLine(array[i]);
    24 
    25 }

    3. 创建对象:

     String s=new String ("xyz");

    其中创建了2个对象;    String s=new String();  和   String s="xyz";

    4.委托:

       委托可以把一个方法作为参数代入另一个方法;

       事件可以看做是一种特殊的委托;

       委托可以理解为指向一个函数的引用(指针);

       委托可以不带委托名(匿名委托);

    委托分为:  delegate匿名委托,  Func委托,  Action委托,  lambda表达式;

    5.关键字: sealed关键字修饰的类,是密封的,不能被继承;

          abstract : 抽象, 由abstract修饰的类叫抽象类,抽象类中可以没有抽象方法;

              由abstract修饰的方法叫抽象方法,如果一个类中有抽象方法,那么这个类一定是抽象类;

          override:表示对方法的重写;

          delegate: 委托的关键字;

          event: 事件的关键字;事件可以看成是特殊的委托;

    6.as和is:

     as和is永远都不会抛出异常;如果对象引用为null;那么is操作符返回为false;

    7:staic: 用static修饰的成员称为静态成员.静态成员只能由类来调用;

                包含静态成员的类可以不是静态类;

                静态类不能被实例化,所以内部只允许有静态成员或const修饰的常量;

        有静态构造方法(函数),静态构造方法必须无参,不能重载;

    8.关于泛型:  可以最大限度的重用代码,保护类型的安全以及提高性能;

                      降低了强制转换或装箱操作的成本或风险;

                      可以对泛型类进行约束以访问特定数据类型的方法;

    9.关于集合: Queue先进先出(FIFO)的一种数据结构;

          要是用Dictionary时,需要先引用System.Colletions.Generic命名空间;

          Stack类实现了ICollection和IEnumberable接口,Stack(栈)先进后出;

          List<T>类表示可以用过索引访问的对象的强类型列表;

    10.值类型和引用类型的区别:

      值类型在栈中分配内存,由系统自动分配;

      引用类型储存在堆中,需要程序员自己分配内存空间。指向同一内存空间;

    引用类型相互赋值以后,他们共用同一内存空间,相互影响,一个值改变,另一个值也会发生改变;

    11.虚函数和抽象函数:
      虚函数用 virtual 关键字修饰, 虚函数允许被重写也可以不重写;
      抽象函数用 abstract 关键字修饰;必须要要求其继承者者重写,声明时不提供其自身的实现,不能被实例化;
    如果一个类中,有用抽象函数,那么这个类一定是抽象类,抽象类中也可以没有抽象函数;

    12.ArrayList和List的区别:

      ArrayList 不是强类型,效率比List慢,代表了可以被单独所有的对象的有序集合;ArrayList是命名空间System.Collections下的一部分,在使用该类时必须进行引用,

    同时继承了IList接口,提供了数据存储和检索。ArrayList对象的大小是按照其中存储的数据来动态扩充与收缩的。所以,在声明ArrayList对象时并不需要指定它的长度

      List是强类型;List类是ArrayList类的泛型等效类,它的大部分用法都与ArrayList相似,因为List类也继承了IList接口。最关键的区别在于,在声明List集合时,我们同时需要为其声明List集合内数据的对象类型。

    13.拆箱和装箱:

    装箱就是将值类型的数据打包到引用类型的实例中;

    int i=123;

    Object obj=(Objecte)i;

    拆箱就是从引用数据中提取值类型;

     int num1=10;
       object boj1 = num1;
       int b = (int)boj1;
       Console.WriteLine (boj1);    //  打印结果为10;

    13.C#中的interface和class的区别:

      接口可以理解成一种特殊的类,由常量和抽象方法组成的特殊类。 接口不能实例化; 接口中的方法没有方法体{};继承接口的类一定要实现接口中定义的方法

      类可以实例化,可以定义自己的字段,属性,方法等等;类可以继承多个接口,但只能继承一个类!

    14.new关键字的用法:①.new 运算符:用于创建对象和调用构造函数。

            例:  Class_Test MyClass = new Class_Test();

                ②.可以用于泛型 where限制  用于在泛型声明中约束可能用作类型参数的参数的类型。

                 where:new()    new()限制只能用于限制的最后;

                ③.修饰符,用于隐藏基类成员的继承成员;

          注意: 不能重载new运算符;

    15.访问级别:    ①. public:公有访问,不受任何限制;

            ②.private:私有访问,只限于本类成员访问,子类,实例都不能访问;

            ③.protected:保护访问,只限于本类和子类访问,实例不能访问;

            ④.internal:内部访问,只限于本项目访问,其他不能访问;

            ⑤.protected internal:内部保护访问:只限于本项目和其子类访问;

    16.struct和class的异同:

        struct是值类型,创建一个struct类型的实例被分配在栈上。class是引用类型,创建一个class类型实例被分配在托管堆上。

        struct实例的赋值,赋的是值,struct作为参数类型传递,传递的是值。class实例的赋值,赋的是引用地址。class作为参数类型传递,传递的是引用地址。

                           

        struct的的默认访问权限public,class 的默认访问权限是private。

        struct声明的构造函数必须带有参数;而class可以显式声明无参数构造函数。

         class支持继承,struct不支持继承,但支持接口。


        class偏向于"面向对象",用于复杂、大型数据,struct偏向于"简单值",比如小于16字节,结构简单。


              class的成员变量可以在声明的时候赋初值,而在struct声明中,除非字段被声明为 const 或 static,否则无法初始化。

       

        

  • 相关阅读:
    Linux培训教程lgzip命令详解和使用实例
    Linux 新手应该知道的一些求助命令
    “变态教育创导者”兄弟连教育新三板挂牌上市
    linux中more命令如何使用
    html上标与下标应用
    linux命令大全之cal命令详解(显示日历)
    成为java高手的八大条件
    mysql 1055
    MySQL更改口令报错ERROR 1064
    centos7.5 安装mysql8.0
  • 原文地址:https://www.cnblogs.com/fengjiulin110120/p/6675202.html
Copyright © 2020-2023  润新知