C#基础学习要点总结1

 

结构是值类型 (轻量级) 效率高

 

类是引用类型 (重量级)

1)静态成员属于类 生命周期:第一次类加载(被访问的时候)这个类下面的所有的静态成员会被加载到静态存储区,静态成员只存在一份,静态成员一旦创建在程序退出的时候才会被回收.

2)实例成员属于对象 生命周期: 随着对象的创建而创建,被GC回收的时候

3)在静态方法中不能直接访问实例成员

4)静态构造函数

第一次类的成员被访问的时候,静态构造函数执行 只执行一次

在执行第一次访问之前先执行静态构造函数,再接着执行你的操作

 

里氏替换原则:LSP子类可以替换父类的位置,并且程序的功能不受影响

父类有的功能子类都有 所以不影响程序的功能

父类变量指向了一个子类对象

当一个父类变量指向一个子类对象的时候 只能通过这个父类对象

调用父类的成员,子类独有的成员无法调用

子类变量不能指向一个父类对象

Person p = new Person();

Strudent s = new Student();

P = s;

Person p1 = new Person();

Student s1 = (Student)p1;

子类变量不能指向一个父类对象

必须要有继承关系,才可以使用强制转换

如果一个父类变量指向的就是一个父类对象,将这个父类对象转换为子类对象的时候 会报异常

如果一个父类变量指向了一个子类对象,那么可以将这个父类变量转换为子类对象

Student s0 = (Student)p; //会报错

 

 

IS 判断变量是否是指定的类型

bool b = p is Person;

b = p is Student; //因为一个person不一定是Student

b = p is Object; //因为Person从Object继承

B = p is Program;   如果没有继承关系,表达式的值永远都是false

B = p1 is Person 父类变量指向子类对象,父类变量本身是Person 指向的对象学生也是一个Person

B = p1 is Student; // p1变量指向的对象本来就是一个Student 

 

 虚方法

如果子类重写了父类的虚方法,那么父类变量来调用这个方法的时候 会调用子类的

父类变量指向子类的对象

子类可以重写父类的虚方法,如果重写了,那么通过父类变量来调用虚方法,会调用子类的,如果没有重写会调用父类的

Virtual 

Override

 

多态 同一种行为,对于不同的事物,有不同的表现形式

多态的表现形式之一:将父类类型作为方法的参数

屏蔽多个子类的不同,将多个子类当成父类来统一处理

 

继承是为了多态. 扩展  开闭原则

 

多态的两种表现形式:

1)将父类类型作为方法 2)将父类类型作为返回值

多态是基于继承

找父类

 

原文地址:https://www.cnblogs.com/chenanzixue/p/3464955.html