1.可以用于类,方法,属性,事件和索引指示器,表示其为抽象成员;

2.用abstract修饰的方法不可以声明主体;

3.只要类中有abstract修饰的成员,该类就必须声明为abstract的;

4.abstract修饰的类不可以实例化实体;

5.abstract类中的abstract成员可以由子类override;

6.abstract修饰符用来强制继承类必须实现某一成员。

virtual:

1.用virtual修饰的方法必须声明实体;

2.父类中的virtual成员可以由子类override;

3.用父类声明一个变量指向子类的实体,如果子类override了父类中的virtual方法,那么执行子类中的方法,否则执行父类中的方法

(如果父类中该方法不声明为virtual,也可以被子类继承,但是如果子类中有签名相同的方法,那么这里相当于子类隐藏了父类的该方法,

即相当于使用了修饰符new,这时用父类声明一个变量指向子类的实体,执行该方法将执行父类的方法);

4.用来实现多态。

override:

1.用来重写成员;

2.类中override修饰的成员,其子类中可以继续override。

virtual abstract 都是用来修饰父类的,通过覆盖父类的定义,让子类重新定义。 它们有一个共同点:如果用来修饰方法,前面 必须 添加public,要不然就会出现编译错误:虚拟方法或抽象方法是不能私有的。毕竟加上 virtual abstract 就是让子类重新定义的,而private成员是不能被子类访问的。 但是它们的区别很大。( virtual 是“虚拟的”, abstract 是“抽象... 当在页面cs文件中,写类属性时,运行会碰到以下问题:CS0501: “ASP.default_aspx.Person.Level.get” 必须 声明 主体 ,因为它未标记为 abstract 或 extern。如图所示: 这是因为在vs2005中是不允许这样写的, 必须 对get、set方法进行返回值或赋值。如下: public class Person virtual 是实现C++多态的关键性条件:C++使用关键字 virtual 来修饰类中的方法,被修饰的方法可以在子类中重写,如此便覆盖基类方法,以实现相同的行为却不同的功能;多继承情况下的基类析构函数通常 声明 virtual (虚方法),这样做的好处是:确保正确的析构顺序——基类对象的析构晚于子类对象。除此之外,如果基类中至少有一个函数被 声明 为纯虚函数( virtual void func()= 0;),那么这个基类为抽象基类,如此它便不能实例对象,并且 必须 在其派生类中对纯虚函数进行实现,而基类只能 声明 而不能实现 static void Main(string[] args);struct APoint//描述点数据的结构{public int X;//x坐标public int Y;//y坐标public APoint(int point_X, int point_Y)//带参数的构造函数{this.X = point_X;this.Y = point_Y;}public void Move(int of... <br />类就是用class来 声明 的。class的语法如下:<br /><类的访问修饰符> class 类名<br />{<br />//类的 主体 <br />}<br />除class关键字和类名外,访问修饰符是可选项。下面以汽车为例 声明 一个类,代码如下:<br />public class Car<br />{<br />//汽车属性和方法<br />}<br />类命名要遵循的编码规则:<br />类命名应该采用帕斯卡命名法,即首字母大写。通常命名类采用完整的英文单词,如Book,Car,Teache C# 基础知识之八 由朱朱编写,转载请注明出自朱朱家园http://blog.csdn.net/zhgl7688 1、  枚举数类型有3种:非泛型接口(IEnumerator/IEnumerable接口)、泛型接口(IEnumerator/IEnumerable接口)、不使用接口。 2、  IEnumerator接口包含3个函数成员:current返回当前位置项(只读属性),movenext把 如果一个函数的 主体 ,仅有一条语句,且这条语句不是流程控制语句。那么可以把函数 主体 的大括号,改为=>表示。如果是有返回值的函数,那么这连return也可以省略。这同样可以适用于访问器。然而,一般不建议对函数使用这种简写方式。因为难以判断这个函数的边界。而属性自体有一对大括号,内部的访问器种类也有限,较为容易判断。