NET面试题及答案 联系客服

发布时间 : 星期四 文章NET面试题及答案更新完毕开始阅读3aca4deef8c75fbfc77db2d3

VS2005可以直接部署到对应的位置。

29. 如何理解.NET中的垃圾回收机制?

答:.NET中的垃圾回收机制是引用程序对内存的回收和释放。当每次用new关键字创建一个对象时,运行库都要从托管堆中为其分配内存,因为空间是有限的,最终垃圾回收机制是要回收不再使用的内存的。已释放内存,重新使用。

30. 面向对象的三大基本原则?

答:封装,继承,多态。

31. 在.NET中所有类的基类是?

答:object。

32. 能用foreach遍历访问的对象需要怎样实现?

答:需要实现IEnumerable接口和GetEnumerator()方法。

33. Heap与Stack的差别?

答:Heap是堆,空间是由手动操作分配和释放的,它的存储区是很大的自由存储区。

Stack是栈,是由操作系统自动分配和释放的,栈上的空间是有限的。程序在编译期间变量和函数分配内存都是在栈上进行的,且在运行时函数调用时的参数的传递也是在栈上进行的。

说明:本文转自于http://www.cnblogs.com/qiuyi21/articles/1091415.html,其中有些答案不代表本人观点,有些答案需要进一步完善或持保留意见。

补充部分:

34. Interface时候可以继承Interface? abstract class 能否继承自interface?

答:interface可以继承自interface. abstract class 也可以继承自interface,只要将interface抽象实现

35. interface中是否可以定义一个delegate类型?事件是否是一种delegate?

答:定义delegate是一种新的数据类型。例如public delegate int mydelegate(int x,int y)。而在interface中是不能定义type的。interface中只能包括methods.property和索引index.

36.C#中可以实现多重继承吗?如何实现?

答:C#中可以利用interface实现多重继承。例如: public interface A{void f();} public interfae B {void g();} public class C:A,B {

public void f(){} public void g(){} }

37.Interface和abstract class 有什么异同? 答:请参考我的另外一篇文章:

38.什么是interface的显示实现(explicit implementation)和隐式实现(implicit implementation)?他们之间有什么区别? //这就是隐式实现 public interface IA {

void f(); }

public class A:IA {

void f()

{

implementation code..... } }

//这就是显式实现 public class B:IA { IA.f() {

implementation code... } }

区别:对于显式实现的接口方法,只能通过接口类型引用。而对于隐式实现的接口方法,既可以通过接口类型引用,也可以通过该类型本身引用。例如: A a=new A(); B b=new B(); A.f();//这是不允许的 IA ia=a;

ia.f();//这是允许的 b.f();//允许

或者: IA a=new A(); IA b=new B(); a.f();//允许 b.f();//允许

39.我们都知道,C#实现了对内存Heap的托管,那么在C#中还可以直接操作指针吗?如果不行,为什么?如果可以,如何实现?

答:虽然C#所有代码都是托管代码,所有被托管的代码都称为安全代码。但是C#中也考虑到了对指针的直接操作。因此在C#中,我们仍然可以直接对指针进行操作,也就是将其标记为非安全代码即可,即 unsafe {非安全代码}。例如 public class MyUnsafeCode {

public unsafe void swap(int *x,int *y) { int t; t=*x; *x=*y; *y=t; } }

public class program {

public static void Main() {

MyUnsafeCode hrg=new MyUnsafeCode(); int x=10,y=11; unsafe {

hrg.swap(&x,&y); } } }

40.在C#项目中可以调用C/C++编写的dll库吗?如果不行,为什么?如果可以,如何调用? 答:大量的积累的项目都是用C/C++编写而成的dll,因此在C#中是可以调用的。 调用方法如下:

假设我们有一个用C/C++编写的dll, 名为MyDll.dll, 在dll中有个方法叫做SayHi(), 该方法的作用就是