C# 面试的“区别”

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引用。

原文地址:https://www.cnblogs.com/oiliu/p/3396675.html