C#基础点记录

1、自定义代码段
    工具-》代码段管理器
3、Random:伪随机数
4、ref:模拟将值类型作为引用类型去传递,将变量在栈中的地址作为参数传递过去
      out:也是将变量在栈中的地址作为参数传递,不同于ref的是:只输出,不需要输入
      普通:直接将值类型的一个复本传递过去,并不会影响原来值
    ref与out的区别:
        -》ref需要有初始值,再进入函数进行运算
        -》out不需要有初始值,只要声明即可
5、params可变参数,简化了使用时构造数组的操作
    注意:在传递时,可以不传递任何参数,所以在使用时需要对数组进行判断
    编译时,由系统完成将多个参数构造成一个数组的过程


6.数字处理:在无界面的情况下,只能只用强转,出错后报异常
    关于值类型的引用传递:一共有三种传递方式:值传递,ref,out
    switch(表达式):类型必须是 bool、char、string、整型、枚举或相应的可以为 null 的类型
    params:可变参数,编译器帮助我们将多个参数封装到一个数组中
        定义方法时,定义为一个数组,方法体中也对数组进行操作
        调用时,直接写值,不用进行数组的构造
        要求:只能将多个参数的最后一个定义为可变参数
7、索引器:类似于属性,完成类中数组的封装,包括set与get两部分
    属性用于完成类中字段的封装
    定义:使用this[参数]
        {
            get
            {
                ...
            }
            set
            {
                ...
            }
        }
8、方法重载
    在一个类中,方法的名称相同,参数不同(参数的个数或类型不同)
    方法的签名:访问修饰符 返回类型 方法名称(参数列表)
    对于方法重载:只考虑方法名称、参数列表部分,与返回类型、访问修饰符无关
9、字符串可以当作字符数组看待(不能修改)
10、this:表示当前类的某个实例
    变量的作用域:按块划分,以大括号为界线
    自动属性:如果不对字段中的数据进行特别操作,只是直接进行设置或返回,可以写成自动属性,比较省事
        编译器会为自动属性生成一个后台使用的字段
    程序集是类文件物理上的反映,命名空间是类文件逻辑上的划分
        一个程序集可以包含多个命名空间
        一个命名空间可以包含在多个程序集中

11.索引器和数组字段有什么区别
        同:属性与字段,字段用于存储数据,属性封装字段,完成字段的读写操作,封装的目标,是出于安全性的考虑
        数组字段:用于存储一组相同类型的数据;索引器是对类中的数组成员进行封装的就去
        如何得到类中数组的无数的个数:定义一个只读属性Length
    详细讲下this的用法:表示当前类的某个实例,调用当前类中的成员;调用类中的其它构造方法
        如果在一个范围内,引起了冲突,就必须加this以表示这个成员是类级别的成员;如果不会引起歧义,可以不加this关键字
    构造方法:直接快速完成类中某些字段值的初始化
    类前面默认的访问修饰符是:internal
    计算器中char key = e.KeyChar; 的使用还是不太理解
    方法重载:方法名相同,参数不同(参数个数或类型不同)
12、构造方法
    构造方法也可以重载:参数不同(参数个数或类型不同)
        如果没有定义构造方法,编译器会为我们生成一个无参的构造方法
        当我们在类中自定义了构造方法后,编译器将不再为我们生成无参的构造方法
        一个构造方法中,只能调用其它的任意一个构造方法,在构造方法后面使用:this(参数列表)
        静态构造方法:只会在类加载时执行一次,完成类中静态字段的初始化
13、在一个类中,方法和构造方法的区别
    方法:用于表示对象的行为、动作
    构造方法:为了快速完成类中成员字段的初始化而写的一个方法
    这两个东西没有什么需要比较的
14、索引器中的this【】有神么作用
    就是定义索引器的语法格式
15、Combobox中直接存储对象
    对于存储的数据和显示的数据,可以不一样:通过类的封装实现
    将combox改成只选,不允许用户输入:DropDownStyle-DropDownList
    ->难理解1:存储的数据是一个学生对象,显示的数据是对象的一个属性
    ->难理解2:在combobox中显示的对象的内容,是调用对象的tostring()方法返回的字符串
    步骤:
    ->新建学生类,重写ToString()方法
    ->实例化对象,添加到Combobox中Items.Add
    ->点击时,获取对象SlectedItem,进行类型转换得到学生对象
16、对象初始化器
    类中必须要有一个无参的构造方法
    使用时,不需要给构造方法中传递参数,直接使用{属性1=值1,。。。}
    构造方法的小括号可以省略不写
17、继承:
    继承关系,是描述类与类之间的关系,而不是对象与对象之间的关系
    判断两个类中是否有继承关系,可以使用"A 是不是B"来判断,如果是则A继承B,如果不是则不继承
    单根继承性:一个类只能直接继承于一个其它类
    传递性:祖宗类的成员可以通过间接继承被后代类所拥有
    继承的时候,构造函数是不被继承的
    继承中的构造方法的执行过程:
        当调用某个类的构造方法时,判断有没有base或this,
        如果有,则跳到相应的方法处去执行;
        如果没有,去执行父类无参的构造方法;
        到object类的无参构造方法为止
18、访问修饰符
    类中属性或字段的访问级别不能比所对应的类型访问级别高
        在程序集A中,写如下代码
        internal class Car{
            ...
        }
        public class Person
        {
            public Car car{
                get;
                set;
            }
        }
        在程序集B中写如下代码
        Person p=new Person();
        p.car=new Car();//这句代码会出错,因为Car是internal的访问修饰符,出了程序集将不会再被访问到
    方法的访问级别不能比方法的参数和返回值的访问级别高
        在程序集A中,写如下代码
        internal class Car{...}
        public class Person
        {
            public Car Drive(string brand)
            {
                return new Car(brand);
            }
        }
        在程序集B中,写如下代码
        Person p=new Person();
        Car c=p.Drive("audi");//这句代码会出错,无法正常执行,在调用new Car(brand);时将报错

原文地址:https://www.cnblogs.com/zxx193/p/2997935.html