1、C#的编译原理
答:源代码---->MSIL(微软中间语言)---->机器语言:以供计算机调用,载入内存时进行第二次编译。编译时是按需编译,即只编译所用到的代码,而不是全部程序,称为JIT(即时编译)。
2、三大结构
答:顺序
分支:if else;ase;?:(三元运算符)c++中字符串数组怎么定义
循环:while;do while;for;foreach
3、短路运算
答:所谓短路运算是指系统从左至右进行逻辑表达式的计算,一旦出现计算结果已经确定的情况,则计算过程即被终止。
4、面向对象的三大特性
答:封装、继承、多态
A、封装:保证对象自身数据的完整性和安全性。
B、继承:建立类之间的关系,实现代码复用,方便系统的扩展。
C、多态:相同的方法调用可实现不同的实现方式。
5、类和结构体的区别
答:相同点:
A、都可以包含字段,方法。
B、都可以实现接口。
不同点:
A、结构是值类型,类是引用类型。
B、结构(值)存放在栈(堆栈)中,类(引用)存放在堆中。
C、结构不能被继承,而类可以被继承。
D、结构不能包含显示的无参数的构造方法,类可以。
E、类使用时必须用new关键字,而结构可以使用也可以不使用new关键字。
6、字段和属性的区别
答:字段用于存储数据,属性是字段的封装,属性实际上是方法。
字段不可控制读写,而属性可以用set和get来实现可读可写的控制。
7、类的修饰符
答:public、internal、static、abstract、sealed
abstract:用于声明虚类,指示某个类只能是其他类的基类。
partial:部分在整个同一程序集中定义分部类、结构和方法。
sealed:指定类不能被继承。
static:声明静态类,类型本身只含有静态成员,不能被实例化。
8、类的访问修饰符
答:public:公共访问是允许的最高访问级别,对访问没有限制;
private:私有访问是允许的最低访问级别,私有类只有在声明它们的类和结构体中才是可访问的;
internal:类型和类型成员的访问修饰符。只有在同一程序集的文件中,内部类型或成员才是可访问的;
protected:受保护类在其所声明的类中可由其所声明类的派生类实例访问
9、类成员访问修饰符以及含义
答:A、public:同一程序集中的任何代码或引用该程序集的其他程序集都可以访问该类型或成员。
B、private:成员的默认访问修饰符,只有同一个类或者结构中可以访问该
类型或成员。
C、protected:只有同一个类或者结构或者派生类中的代码可以访问该类型
或成员。
D、internal:同一程序集中的任何代码都可以访问该类型或成员,其他程序
集中的代码不可以。
E、protected internal:同一程序集中的任何代码或其他程序集中的任何派
生类都可以访问该类型或成员。
10、什么是抽象类和抽象方法
答:抽象方法:使用ahstract修饰,并且没有方法实现的方法。
抽象类:用abstract修饰的类,不能被实例化,只能被继承,其中的抽象方法必须要被重写。
抽象方法必须在抽象类中。
11、抽象类和接口的区别
答:相同点:
A、都不能实例化。
B、都包含未实现的方法。
C、子类必须实现未实现的方法(抽象类是抽象方法,接口是所有成员)。
D、都可以继承一个或多个接口。
不同点:
A、抽象类用abstract定义,接口用interface定义。
B、抽象类可以继承一个类,而接口不可以。
C、抽象类可以定义字段、属性和带有实现的方法,而接口不可以。
D、接口的成员访问修饰符必须是public,而抽象类不是,可以随意定义。
12、什么是方法重载和重写以及区别
答:重载:就是在同一个类中存在多个同名的方法,而这些方法的参数列表(数量、顺序、类型)不同。
A、重载存在于同一个类中。
B、方法重载要求具有相同的方法名,不同的参数列表(数量、顺序、类型),
与返回值类型没有关系。
重写:就是在子类中重复定义父类方法,提供不同实现,存在于有继承关系的父子关系。(当子类重写父类的虚函数后,父类对象就可以根据根据赋予它的不同子类指针动态的调用子类的方法。)
A、只有以virtual和abstract标记的虚方法和抽象方法才能被直接重写。
B、重写以关键字override标记,强调继承关系中对基类方法的重写。
C、重写方法要求具有相同的方法签名,包括:相同的方法名、相同的参数
列表和相同的返回值类型。
13、REF和OUT的用法
答:A、ref关键字使参数按引用传递;out关键字使参数为输出参数。
B、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其
完成初始化。
C、使用ref和out时,在方法的参数和执行方法时,都要加ref或out关键字,以满足
匹配。
D、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调
用者的引用的时候。
14、数组、集合和泛型集合的区别
答:数组:只能存放定义类型的元素,大小固定,取出时不用做类型转换。
集合:可存放任意类型的元素,大小动态改变,取出时需要做类型转换。
泛型集合:只能存放定义类型的元素,大小动态改变,取出时不用做类型转换。
15、自加和自减
答:加(减)在前面,就先加后用;加(减)在后面,就先用后加。
(3130)
16、什么是命名空间和程序集,以及它们的区别和联系
答:命名空间:声明自己的命名空间可以帮助控制类名称和方法名称的范围。
程序集:构成了基于.NET的应用程序的部署、版本控制、重用、激活范围和安全权限的基本单元。
A、程序集用于组件的打包、部署、分发以及版本控制;命名空间前缀用于类型系统的
逻辑划分。
B、命名空间是类库的逻辑组织形式,程序集就是类库的物理组织形式。
C、程序集简单理解为你的.NET项目在编译后生成的*.exe或*.dll文件。
D、一个程序集可以跨越n个命名空间,一个命名空间也可以包含n个程序集。
17、using的用法和new的用法
答:using是引用已经创建好的实例。
A、引用命名空间
B、创建命名空间别名
C、强制资源清理,确保退出using语句时在对象上调用Dispose。
new是重新创建一个新实例。
A、运算符,用于创建对象和调用构造函数。
B、修饰符,用于隐藏基类成员的继承成员。
C、约束,用于泛型申明中约束可能用作类型参数的参数的类型。
18、值类型和引用类型的区别,并举出几个典型的事例
答:值类型:存储在栈中,传递的是值。
如:基本数据类型(int,long,float,char,bool)、枚举(enum)、结构(struct)引用类型:存储在堆中,传递的是引用。
如:object、string、class、数组
值类型和引用类型的区别,就在于当函数参数传递的时候。值类型是把自己的值复制一份传递给别的函数操作.无论复制的值怎么被改变.其自身的值是不会改变的。而引用类型是把自己的内存地址传递给别的函数操作.操作的就是引用类型值的本身.所以值被函数改变了。
19、什么是装箱和拆箱操作
答:装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作。
1.装箱在值类型向引用类型转换时发生,如int a=2;object obj=a;
2.拆箱在引用类型向值类型转换时发生,如int b=(int)obj;person p=(person)Student;
20、所有类的父类
答:子类使用new关键字屏蔽父类的方法,调用谁的方法由“定义时的类型决定”;
子类使用override关键字重写父类方法,调用谁的方法由“运行时引用真实的对象决定”。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论