常用C#关键字详解教程(比较全面)
不论你是新手还是老手,是否对C#的某些关键字有些摸不到头脑呢?现在我就和大家一起学习一下这些关键字的含义
类型
Void
用作方法的返回类型时,void关键字指定方法不返回值。
在方法的参数列表中不允许使用void。采用以下形式声明一个无参数的、不返回值的方法:
OvidSampleMethod();
Var
在方法范围中声明的变量可以具有隐式类型var。隐式类型的本地变量是强类型变量(就好像您已经声明该类型一样),但由编译器确定类型。有返回值
引用类型
Class
类是使用关键字class声明的
委托
委托类型的声明与方法签名相似,有一个返回值和任意数目任意类型的参数:
publicdelegatevoidTestDelegate(stringmessage);
publicdelegateintTestDelegate(MyTypem,longnum);
delegate是一种可用于封装命名或匿名方法的引用类型。委托类似于C++中的函数指针;但是,委托是类型安全和可靠的。
接口
接口只包含方法、属性、事件或索引器的签名。成员的实现是在实现接口的类或结构中完成的
Object
object类型在.NETFramework中是Object的别名。在C#的统一类型系统中,所有类型(预定义类型、用户定义类型、引用类型和值类型)都是直接或间接从Object继承的。可以将任何类型的值赋给object类型的变量。将值类型的变量转换为对象的过程称为“装箱”。将对象类型的变量转换为值类型的过程称为“取消装箱”。
String
string类型表示零或更多Unicode字符组成的序列。string是.NETFramework中String的别名。
尽管string是引用类型,但定义相等运算符(==和!=)是为了比较string对象(而不是引用)的值。这使得对字符串相等性的测试更为直观。
修饰符
Override
要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用override修饰符。
Virtual
virtual关键字用于修饰方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。例如,此方法可被任何继承它的类重写。
volatile
volatile关键字指示一个字段可以由多个同时执行的线程修改。声明为volatile的字段不受编译器优化(假定由单个线程访问)的限制。这样可以确保该字段在任何时间呈现的都是最新的值。
unsafe
unsafe关键字表示不安全上下文,该上下文是任何涉及指针的操作所必需的。
static
使用static修饰符声明属于类型本身而不是属于特定对象的静态成员。static修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型。
sealed
当对一个类应用sealed修饰符时,此修饰符会阻止其他类从该类继承。在下面的示例中,类B从类A继承,但是任何类都不能从类B继承。
readonly
readonly关键字是可以在字段上使用的修饰符。当字段声明包括readonly修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中。
extern
extern修饰符用于声明在外部实现的方法。extern修饰符的常见用法是在使用Interop服务调入非托管代码时与DllImport属性一起使用。在这种情况下,还必须将方法声明为static
event
event关键字用于在发行者类中声明事件。
const
const关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值是常数,不能被修改。
abstract
abstract修饰符可以和类、方法、属性、索引器及事件一起使用。在类声明中使用abstract修饰符以指示某个类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。
访问修饰符
internal
internal关键字是类型和类型成员的访问修饰符。只有在同一程序集的文件中,内部类型或成员才是可访问的
private
private关键字是一个成员访问修饰符。私有访问是允许的最低访问级别。私有成员只有在声明它们的类和结构体中才是可访问的
protected
protected关键字是一个成员访问修饰符。受保护成员在其所在的类中可由派生类实例访问。
public
public关键字是类型和类型成员的访问修饰符。公共访问是允许的最高访问级别。
abstract可以和类、方法、属性、索引器及事件一起使用,
标识一个可以扩展但不能被实体化的、必须被实现的类或方法。
as一个转换操作符,如果转换失败,就返回null。
base用于访问被派生类或构造中的同名成员隐藏的基类成员。
catch定义一个代码块,在特定类型异常抛出时,执行块内代码。
参见try和finally。
checked既是操作符又是语句。
确保编译器运行时,检查整数类型操作或转换时出现的溢出。
const标识一个可在编译时计算出来的变量值,即一经指派不可修改的值。
delegate指定一个声明为一种委托类型。委托把方法封装为可调用实体,
能在委托实体中调用。
enum表示一个已命名常量群集的值类型。
event允许一个类或对象提供通知的成员,他必须是委托类型。
explicit一个定义用户自定义转换操作符的操作符,
通常用来将内建类型转换为用户定义类型或反向操作。
必须再转换时调用显示转换操作符。
extern标识一个将在外部(通常不是c#语言)实现的方法。
finally定义一个代码块,在程序控制离开try代码快后执行。参见try和catch。
fixed在一个代码块执行时,在固定内存位置为一个变量指派一个指针。
foreach用于遍历一个群集的元素。
goto一个跳转语句,将程序执行重定向到一个标签语句。
implicit一个操作符,定义一个用户定义的转换操作符。
通常用来将预定义类型转换为用户定义类型或反向操作。
隐式转换操作符必须在转换时使用。
interface将一个声明指定为接口类型,即实现类或构造必须遵循的合同。
internal一个访问修饰符。
namespace定义一个逻辑组的类型和命名空间。
operator用来声明或多载一个操作符。
out标识一个参数值会受影响的参数,但在传入方法时,
该参数无需先初始化。
params声明一个参数数组。如果使用,必须修改指定的最后一个参数。
允许可选参数。
readonly标识一个变量的值在初始化后不可修改。
ref标识一个参数值可能会受影响的参数。
sealed防止类型被派生,防止方法和property被覆载。
sizeof一个操作符,以byte为单位返回一个值类型的长度。
stackalloc返回在堆上分配的一个内存块的指针。
structstruct是一种值类型,可以声明常量、字段、方法、property、
索引器、操作符、构造器和内嵌类型。
throw抛出一个异常。
try异常处理代码块的组成部分之一。try代码块包括可能会
抛出异常的代码。参阅catch和finally关键字。
typeof一个操作符,返回传入参数的类型。
unchecked禁止溢出检查。
unsafe标注包含指针操作的代码块、方法或类。
using当用于命名空间时,using关键字允许访问该命名空间中的类型,
而无需指定其全名。也用于定义finalization操作的范围。
virtual一个方法修饰符,标识可被覆载的方法。
volatile标识一个可被操作系统、某些硬件设备或并发线程修改的attribute。
一般的构造函数总是public类型的,如果是private类型的,表明类不能被实例化,这通常用于只含有静态的成员的类。
在派生类中声明对虚方法的重载,要求在声明中加上override关键字,而且不能有new,static或virtual修饰符。
密封类在声明中使用sealed修饰符,这样就可以防止该类被其它类继承。