1. 重载和重写的区别
1) 所处位置不同重载在同类中重写在父子类中
2) 定义方式不同重载方法名相同参数列表不同重写方法名和参数列表都相同
3) 调用方式不同重载使用相同对象以不同参数调用重写用不同对象以相同参数调用
4) 多态时机不同重载时编译时多态重写是运行时多态
2. 面向对象的三大特点
封装、继承、多态
1.继承:提高代码重用度,增强软件可维护性的重要手段,符合开闭原则。
2.封装:封装是将数据和行为相结合,通过行为约束代码修改数据的程度,增强数据的安全性,属性是C#封装实现的最好体现。
3.多态性:多态性是指同名的方法在不同环境下,自适应的反应出不同得表现,是方法动态展示的重要手段。
3. 简述值类型和引用类型有什么区别
1.值类型存储在内存栈中,引用类型数据存储在内存堆中,而内存单元中存放的
是堆中存放的地址。
2.值类型存取快,引用类型存取慢。
3.值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针和引用。
4.栈的内存是自动释放的,堆内存是.NET 中会由 GC 来自动释放。
5.值类型继承自 System.ValueType,引用类型继承自System.Object。
4. 请简述private,public,protected,internal的区别
public:对任何类和成员都公开,无限制访问
private:仅对该类公开
protected:对该类和其派生类公开
internal:只能在包含该类的程序集中访问该类
protectedinternal:protected + internal
5. C#中所有引用类型的基类是什么
引用类型的基类是 System.Object 值类型的基类是System.ValueType
同时,值类型也隐式继承自 System.Object
6. 请简述ArrayList 和List<Int>的主要区别
ArrayList 不带泛型数据类型丢失
List<T>带泛型数据类型不丢失
ArrayList需要装箱拆箱 List<T>不需要
7. 请简述 GC(垃圾回收)产生的原因,并描述如何避免?
GC 为了避免内存溢出而产生的回收机制
避免:
1)减少 new 产生对象的次数
2)使用公用的对象(静态成员)
3)将 String 换为 StringBuilder
8. 请描述Interface 与抽象类之间的不同
1.接口不是类不能实例化抽象类可以间接实例化
2.接口是完全抽象抽象类为部分抽象
3.接口可以多继承抽象类是单继承
1. 请简述关键字Sealed 用在类声明和函数声明时的作用
类声明时可防止其他类继承此类,在方法中声明则可防止派生类重写此方法。