background image

Q:您在什么情况下会用到虚方法(虚函数)?

虚函数为了指明某个成员函数具有多态性,用关键字 virtual 来标志其为虚函数。

既然虚函数为多态而生,那么简单的说当我们在 C#中要想实现多态的方法之一就是使

用到虚函数。

 

Q:Override 与重载有什么区别?

1.

父类:public virtual string ToString(){return "a";}

子类:public override string ToString(){return "b";}

2.

同一类中或父子关系类中皆可:

public string ToString(){return "a";}

public string ToString(int id){return id.ToString();}

override 是用于重写基类的虚方法,这样在派生类中提供一个新的方法;

重载是提供了一种机制, 相同函数名通过不同的返回值类型以及参数来表来区分的机制;

 

Q:值类型与引用类型有什么区别?

NET 将数据类型分为值类型(value type)和引用类型(reference type) 

一个具有值类型(简单类型、结构类型、枚举类型)的数据存放在

内的一个变量中。

即是在栈中分配内存空间,直接存储所包含的值,其值就代表数据本身。

值类型的数据具

有较快的存取速度

一个具有引用类型(类、代表、数组、接口)的数据并不驻留在栈中,而是存储于

中。

即是在堆中分配内存空间,不直接存储所包含的值,而是指向所要存储的值,其值代表
的是所指向的地址。当访问一个具有引用类型的数据时,需要到栈中检查变量的内容,该
变量引用堆中的一个实际数据。

引用类型的数据比值类型的数据具有更大的存储规模和较

低的访问速度

Q:怎样理解静态变量?

静态变量(static)是相对自动变量(auto)等而言的,一旦声明为静态变量,在编译时刻开始

永远存在,不受作用域范围约束,但是如果是局部静态变量,则此静态变量只能在局部作用