1、 变量命名的规则有哪些?
2、写出所有的值类型和引用类型?
答: 1、值类型:13中基本数据类型、结构体、枚举;
3、ref参数和out参数是什么?有什么区别?
答:1、ref为引用参数,后面参数的类型为值类型,当把形参值修改后,实参的值也相应的进行修改,使其具有引用类型的性质,但在传实参时,实参必须先赋值;
2、out参数为输出参数,是从方法内部向外部进行传,即把形参传递给实参,方法参数中可以有多个out修饰的参数,形参传递值给实参时要先赋值,而实参可以不用赋值,out参数解决了一个方法不能返回多个返回值的缺陷。
4、结构体和类有何区别?
答:1、语法上的区别:定义类是使用关键字Class,而定义结构体时使用关键字Struct
2、结构体中不可对声明字段进行初始化,但是类可以
3、如果没有为类定义构造函数,C#编译器会自动生成一个无参数的实例构造函数,即隐式构造函数,但是如果我们为类显式地定义了一个构造函数,C#编译器就不会再生成隐式构造函数了;而结构体中,不论你是否显式地定义了构造函数,隐式构造函数都是一直存在的
4、类是引用类型,而结构体是是值类型
5、结构体不能定义析构函数,而类可以有析构函数
6、不能用Abstract(抽象)和Sealed(密封)关键字修饰结构体,但是类可以
1、类中静态字段与非静态字段有什么区别?
答:加static修饰字段时,则该字段为静态字段,静态字段不属于某个实例对象,只与类型相关联,对静态字段的访问只与类型关联,访问时使用类型.字段,实例字段的访问与实例对象关联,访问时使用对象名.字段。
2、面向对象的思想的三个基本特征?分别描述一下定义?
答:封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部。
继承:子类拥有父类的所有数据和操作。
多态:同一种方法作用于不同对象可以产生不同的结果
3、简述抽象方法和虚方法的区别?
4、类中构造方法的作用是?简述构造方法的特点?
答:作用:负责开辟内存空间,初始化对象
1.构造方法的方法名必须和类名一致
2.构造方法没有返回值,不需要写void
3.构造方法能够添加参数
5.如果没有给类添加构造方法,系统会提供一个默认的构造,也就是只开辟空间
6.如果将某个构造方法设为私有的,就不允许再通过这个构造创建对象
1、什么是装箱和拆箱? (2分)
从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱
重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要;
3、C#有几种表达式?根据什么确定表达式的类型?(2分)
在C#中,基本表达式有5种:算术表达式、关系表达式、逻辑表达式、条件表达式和赋值表达式.表达式的类型由运算符的类型决定
4、简述类和结构体的区别(3分)
类的声明和结构体的声明非常类似,只是限定符后面是 struct 还是 class 的区别,而且使用时,定义新的结构体和定义新的类的方法也非常类似。类和结构体的具体区别为:(1)结构体是值类型,类是引用类型。(2)结构体不能从另外一个结构体或者类继承,本身也不能被继承,而类是完全可扩展的,自身也能被继承。(3)结构体没有默认的构造函数,但是可以添加构造函数,没有析构函数;类有默认的构造函数,也有析构函数
5、抽象类和接口的区别(3分)
1. 一个类只能继承一个抽象类,但可以同时继承多个接口;
2. 抽象类里面可以有字段,接口里面不能有字段;
3. 抽象类里面可以有私有成员,接口里面所有的成员都是公有的;
4. 抽象类的成员可以带或者不带访问修饰符,接口里面一定不带访问修饰符;
5. 一个子类继承抽象类时需重写里面的抽象方法,当子类是抽象类时可以不用重写,而继承接口时一定要实现接口里面的成员;
6、简述抽象方法和虚方法的区别 (3分)
* 使用场景:当多个类具有多个相同的字段和方法时,可以将公共的部分定义成父类,供其他类去继承,这样子类中就不用重复添加这些相同的字段和方法
* 继承的优势:省代码,增强程序的可扩展性,可修改性,可复用性
* 如果创建类的时候,没有指定基类,这时,该类默认是继承自Object类(根类)