关键字具体说明和使用示例
static
-
static
关键字可以用来声明静态成员,这些成员不属于类的某个实例,而是属于类本身。静态成员在类的所有实例之间共享。例如,如果想要计算你创建了多少个特定类型的对象,可以使用静态成员:public class MyClass { public static int InstanceCount { get; private set; } public MyClass() { InstanceCount++; } }
在这个例子中,每当创建一个
MyClass
的新实例,InstanceCount
就会增加。可以通过MyClass.InstanceCount
来访问这个成员,无需创建MyClass
的实例。
const
-
const
关键字用于声明常数,这些常数的值在编译时被设置,并且不能改变。常数常常被用于保存程序中不会改变的值。例如:public class MyClass { public const double Pi = 3.14159; }
在这个例子中,
Pi
被声明为一个常数,其值为3.14159
,并且不能被修改。
abstract
-
abstract
关键字用于声明抽象类或抽象成员。抽象类是不能直接实例化的类,只能被继承。抽象成员是只有声明没有实现的成员,必须在派生类中实现。例如:public abstract class Animal { public abstract void Speak(); } public class Dog : Animal { public override void Speak() { Console.WriteLine("Woof"); } }
在这个例子中,
Animal
类是一个抽象类,Speak
是一个抽象方法。在Dog
类中,我们覆盖了Speak
方法,提供了它的具体实现。
TIPS:用override
覆写 abstract
和 virtual
的区别:
- 如上所示,当覆写一个
abstract
方法时,必须提供一个具体的实现,因为abstract
方法在基类中没有任何实现。 - 但是,当覆写一个 virtual 方法时,我们却可以改变该方法在基类中的行为。因为
virtual
方法在基类中已经有一个默认的实现,但是也可以在派生类中提供一个新的实现。如果你在派生类中不覆写 virtual 方法,那么该方法将保持基类中的行为。
附录
C#常用定义成员访问级别关键字
- public:
public
关键字表示该成员可以在任何地方被访问。 - private:
private
关键词表示该成员只能在定义它的类中被访问。 - protected:
protected
关键词表示该成员可以在定义它的类以及该类的派生类中被访问。 - internal:
internal
关键词表示该成员可以在同一个程序集中的任何类中被访问。 - protected internal:
protected internal
关键词表示该成员可以在同一个程序集中的任何类以及定义它的类的派生类中被访问。 - static:
static
关键词表示该成员是属于类本身的,而不是类的实例。 - const:
const
关键词表示该成员的值在编译时就已经确定,并且不能被修改。 - readonly:
readonly
关键词表示该成员的值只能在声明时或在构造函数中被赋值,之后就不能被修改。 - abstract:
abstract
关键词表示该成员是一个抽象成员,必须在派生类中实现。 - virtual: 在C#中,
virtual
关键词用于标记一个方法、属性、索引器或事件,表示它可以在派生类中被覆盖。如果一个方法被标记为virtual
,那么在派生类中可以使用override
关键词来改变这个方法的行为。 - override:
override
关键词用于覆盖继承自基类的virtual
成员。当你想在派生类中改变virtual
成员的行为时,可以使用override
关键词。 - sealed:
sealed
关键词表示该成员不能被覆盖,如果用于类,表示该类不能被继承。