欢迎来到天天文库
浏览记录
ID:39510901
大小:42.00 KB
页数:9页
时间:2019-07-04
《c#面试常见比较》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、1.接口与抽象类有什么区别答:(1).接口用于规范,抽象类用于共性。(2)接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。(3)抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。(4)抽象类可以提供某些方法的部分实现,接口不可以.(5)抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。(6)在抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。(7)接口成员被定
2、义为公共的,但抽象类的成员也可以是私有的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。此外接口不能包含字段、构造函数、析构函数、静态成员或常量。2.String类与StringBuilder类有什么区别?答:(1)StringBuilder表示值为可变字符序列,可以通过追加、移除、替换或插入字符而创建它后可以对它进行修改,而String对象的值是该有序集合的内容,并且该值是不可变的。(2)如果串联固定数量的字符串,则类更适合串联操作,如果串联任意数量的字符串,则StringBu
3、ilder对象更适合串联操作.(3)大量字符连接的时候使用stringbuilder,stringbuilder的效率比string高很多。String类有不可改变性。每次执行字符操作时,都会创建一个新的String对象。StringBuilder类解决了对字符串进行重复修改的过程中创建大量对象的问题。初始化一个StringBuilder之后,它会自动申请一个默认的StringBuilder容量(默认值是16),这个容量是由Capacity来控制的.并且允许,我们根据需要来控制Capacity的大小,也可以通过Len
4、gth来获取或设置StringBuilder的长度.3.在dot.net中类(class)与结构(struct)的异同:答:类是引用类型,可以继承类、接口和被继承,有默认的构造函数,有析构函数,可以使用abstract和sealed,有protected修饰符,必须使用new初始化。结构是值类型,只能继承接口,不能被继承,没有默认的构造函数,可以创建,没有析构函数,不可以用abstract和sealed,没有protected修饰符,可以不用new初始化但可以直接使用它成员。如何选择使用结构还是类:a)堆栈的空间有限
5、,对于大量的逻辑的对象,创建类要比创建结构好一些b)结构表示如点、矩形和颜色这样的轻量对象,例如,如果声明一个含有1000个点对象的数组,则将为引用每个对象分配附加的内存。在此情况下,结构的成本较低。c)在表现抽象和多级别的对象层次时,类是最好的选择d)大多数情况下该类型只是一些数据时,结构是最佳的选择4.Override与重载有什么区别答:其实很本质的区别就是看函数特征:覆写(Override)的两个函数的函数特征相同,重载(Overload)的两个函数的函数名虽然相同,但函数特征不同。函数特征包括函数名,参数的类
6、型和个数。Override是在继承的时候,如果你写的函数与要继承的函数函数特征相同,那么,加上这个关键字,在使用这个子类的这个函数的时候就看不见父类(或超类)的函数了,它被覆盖掉了。5.C#中接口和类的异同接口和类都是类,不同的是,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口可以实现多继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的作用。6.请你说说.NET中类和结构的区别?答:结构和类具有大体的语法,但是结构受到的
7、限制比类要多。结构不能声明有默认的构造函数,因为结构的副本是编译器创建和销毁的,所以不需要默认的构造函数和析构函数。结构是值类型,所以对结构变量所做的改变不会影响其的原值,而类是引用类型,改变其变量的值会改变其原值。声明结构用Struck关键字,申明类用class关键字,向方法传递结构时是通过值传递的,而不是通过引用。与类不同,结构的实例化可以不使用New关键字。类可以实现接口。7.HashMap和Hashtable区别?答:HashMap是Hashtable的轻量级实现,非线程安全的实现他们都实现了map接口,主要
8、区别是HashMap键值可以为空null,效率可以高于Hashtable。8.值类型和引用类型的区别?答:值类型的值是存放在堆栈中的,改变其值,不改变变量原有的值,而引用类型的值是存放在栈中的,其引用的地址是存放在堆中的,改变其值也就改变了变量原有的值。值类型不允许包含null值,然而可空类型可以将null赋值给值类型。9.Heap与stack
此文档下载收益归作者所有