简述C#中值类型和引用类型的异同。
相同点:都是C#中的数据类型
不同点:1、值类型的变量内含变量值本身,C#的值类型可分为简单类型、结构体类型、枚举类型;引用类型也称为参考类型,引用类型的变量不直接存储所包含的值,而是指向它所要存储的值。即值类型变量的内存空间中存储的是实际数据,而引用类型变量在其内存空间中存储的是一个指针,该指针指向存储数据的另一块内存位置。值类型在栈中分配,引用类型在堆中分配。
2、值类型变量的内存开销小,访问速度快;引用类型变量的内存开销大,访问速度稍慢。
简述C#中值类型变量和引用类型变量定义的方法 。
值类型
类型 | 定义方法 |
---|---|
简单类型 | 类型名 变量名; |
结构类型 | 结构类型 结构变量; |
枚举类型 | 枚举类型 枚举变量; |
结构类型的声明
struct 结构类型名称
{[字段访问修饰符]数据类型 字段1;
[字段访问修饰符]数据类型 字段2;
...
[字段访问修饰符]数据类型 字段n;
};
枚举类型的声明
enum 枚举名{枚举成员1,枚举成员2,...}
引用类型
类型名 对象名=new 构造函数();
简述C#中异常处理语句的使用方法。
try
{被保护的语句块;}
catch{异常说明}
{捕获到异常时执行的语句块;}
finally
{完成善后工作的语句块;}
try块:封装了程序要执行的代码,如果这段代码执行过程中出现错误或者异常情况,就会抛出一个异常。
catch块:在try快后面,封装了处理在try代码块的执行过程中出现错误所采取的措施。
finally块:在安装错误处理功能的例程末尾,无论是使用函数处于正常状态,还是因为抛出错误处于不正常状态,这个块中的代码都要执行。另外,不能跳出finally块,如果跳转语句跳出fianlly块,仍要执行finally块。
在C#类的声明方法中,有哪些类访问修饰符和类成员访问修饰符?它们各有什么特点?
类的访问修饰符:
类的修饰符 | 特点 |
---|---|
public | 公共类。表示不受限制对给类的访问 |
protected | 保护类。表示只能从所在类和所在派生的子类进行访问 |
internal | 内部类。只有其所在的类能访问 |
private | 私有类。只有该类才能访问 |
abstract | 抽象类。表示该类是一个不完整的类,不允许建立类的实例 |
sealed | 密封类。不允许从该类派生新的类 |
类成员的访问修饰符
类成员修饰符 | 特点 |
---|---|
public | 公有成员。提供了类的外部界面,允许类的使用者从外部进行访问,这是限制最少的一种访问方式 |
private | 私有成员(默认的)。仅限于类中的成员可以访问,从类的外部访问私有成员是不是合法的,如果在声明中没有出现成员的访问修饰符,按照默认方式成员为私有的。 |
protected | 保护成员。这类成员不允许外部访问,但允许派生类成员访问 |
internal | 内部成员。允许同一个命名空间中的类访问 |
readonly | 只读成员。这类成员的值只能读不能写。也就是说,除了赋予初始值外,在程序的任何一个部分将无法更改这个成员的值 |
简述C#中类的静态方法和非静态方法有什么不同。
1、静态方法不需要类实例化就能被调用,反之非静态方法必须实例化之后才能调用
2、静态方法只能访问静态成员和方法,非静态方法都可以访问
3、静态方法不能标记为override,导致派生类不能重写,但是可以访问
4、静态成员在第一次使用时进行初始化。非静态成员在创建对象时进行初始化。从内存中分配上来说静态是连续的,非静态在内存的存储上是离散的,因此静态方法和非静态方法,在调用速度上,静态方法一定会快点,因为非静态方法需要实例化,分配内存,但是静态方法不用,但是这种速度上的差异可以忽略不计。
简述C#中方法参数有哪些类型,各有什么特点。
参数 | 特点 |
---|---|
值参数 | 不含任何修饰符,当利用值向方法传递参数时,编译程序给实参的值做一份拷贝,并且将此拷贝传递给该方法,被调用的方法不会修改内存中实参的值,所以使用值参数时是可以保证实际值的安全性 |
引用型参数 | 以ref修饰符声明的参数属于引用型参数。引用参数本身并不创建新的内存空间,而是将实参的存储地址传递给形参。所以对形参的修改会影响原来的实参的值。 |
输出参数 | 以out修饰符声明的参数属于输出参数。与引用型参数类似,输出型参数也不开辟新的内存区域。调用方法前无需对参数进行初始化。 |
数组型参数 | 以params修符声明数组型参数。params关键字可以指定在参数数目可变处采用参数的方法参数。在方法声明中的params关键字之后不允许任何其他参数,并且在方法声明中只允许出现一个params关键字。数组型参数不能再有ref和out修饰符 |