C# 面试的“区别”

时间:2021-09-29 21:37:53

1、静态变量与非静态变量的区别

静态变量--static、直接类名+变量名、静态函数里不能用非静态变量。

访问同一类中所有实例同一静态变量都是同一值。非静态变量则不是。

2、const与readonly区别

常量,

const -- 不允许用static修饰,只能在生命是初始化,

readonly -- 可以在声明和函数中初始化。

3、extern与abstract 区别

extern -- 用于修饰引用来自外部的程序集的函数,通常和 DllImport和static 在一起。

abstract -- 与extern不能同时使用,

抽象,可以修饰 类,方法,属性,索引器,事件。

不能实例化。

4、override与overload区别

override 重写  方法名,修饰符,返回值,参数类型,参数个数,必须和基类一致。

overload 重载  只需 方法名一致即可。

5、public,protecte,internal,private 区别

public 无访问限制

protected 访问包含类或者包含类的派生类型

internal  访问包含当前程序集

private 仅限包含类

6、sealed

密封类,阻止继承类。

7、类与结构的区别

类 -- 引用类型 分配堆上的内存

结构 -- 不能被继承。

8、如何手工释放内存

GC 是.net 框架提供的计算机自动释放内存工作,

可以实现一个接口 (IDispose)。

9、string 与 stirngbuilder 的区别

string 每次计算都增加一个新的实例。stringbuilder则不会。

string 是引用类型,在堆上分配内存。

string 一旦生成就不可变,调用引用。

10、params

参数个数可变。

private void method (int a, params int[] aarys){}

11、 什么是反射?

动态调用,改变 属性(程序集)的值

12、remoting 和 webservice 的区别

remoting tcp/ip 传输,二进制传输更迅速,

webservice http传输/web引用。