常用C#关键字详解教程(比较全面)

不论你是新手还是老手,是否对C#的某些关键字有些摸不到头脑呢?现在我就和大家一起学习一下这些关键字的含义

类型

Void

用作方法的返回类型时,void 关键字指定方法不返回值。

在方法的参数列表中不允许使用 void。采用以下形式声明一个无参数的、不返回值的方法:

Ovid SampleMethod();

Var

在方法范围中声明的变量可以具有隐式类型 var。隐式类型的本地变量是强类型变量(就好像您已经声明该类型一样),但由编译器确定类型。 有返回值

引用类型

Class

类是使用关键字 class 声明的

委托

委托类型的声明与方法签名相似,有一个返回值和任意数目任意类型的参数:
public delegate void TestDelegate(string message);

public delegate int TestDelegate(MyType m, long num);

delegate 是一种可用于封装命名或匿名方法的引用类型。委托类似于 C++ 中的函数指针;但是,委托是类型安全和可靠的。

接口

接口只包含方法、属性、事件或索引器的签名。成员的实现是在实现接口的类或结构中完成的

Object

object 类型在 .NET Framework 中是 Object 的别名。在 C# 的统一类型系统中,所有类型(预定义类型、用户定义类型、引用类型和值类型)都是直接或间接从 Object 继承的。可以将任何类型的值赋给 object 类型的变量。将值类型的变量转换为对象的过程称为“装箱”。将对象类型的变量转换为值类型的过程称为“取消装箱”。

String

string 类型表示零或更多 Unicode 字符组成的序列。string 是 .NET Framework 中 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 返回在堆上分配的一个内存块的指针。

struct struct是一种值类型,可以声明常量、字段、方法、property、
索引器、操作符、构造器和内嵌类型。

throw 抛出一个异常。

try 异常处理代码块的组成部分之一。try代码块包括可能会
抛出异常的代码。参阅catch和finally关键字。

typeof 一个操作符,返回传入参数的类型。

unchecked 禁止溢出检查。

unsafe 标注包含指针操作的代码块、方法或类。

using 当用于命名空间时,using关键字允许访问该命名空间中的类型,
而无需指定其全名。也用于定义finalization操作的范围。
virtual 一个方法修饰符,标识可被覆载的方法。

volatile 标识一个可被操作系统、某些硬件设备或并发线程修改的attribute。

一般的构造函数总是public类型的,如果是private类型的,表明类不能被实例化,这通常用于只含有静态的成员的类。

在派生类中声明对虚方法的重载,要求在声明中加上override关键字,而且不能有new,static或virtual修饰符。

密封类在声明中使用sealed修饰符,这样就可以防止该类被其它类继承。

(0)

相关推荐

  • C#中实现线程同步lock关键字的用法详解

    1. lock关键字保证一个代码块在执行的过程中不会受到其他线程的干扰,这是通过在该代码块的运行过程中对特定的对象加互斥锁来实现的. 2. lock关键字的参数必须是引用类型的对象.lock对基本数据类型如int,long等无效,因为它所作用的类型必须是对象.如果传入long类型数据,势必被转换为Int64结构类型,则加锁的是全新的对象引用.如果需要对它们进行互斥访问限制,可以使用System.Threading.Interlocked类提供的方法,这个类是提供原子操作的. 3. lock(th

  • c#多线程中Lock()关键字的用法小结

    本文介绍C# lock关键字,C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待. 每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数.这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生. 其中,lock是一种比较好用的简单的线程同步方式,它是通过为给定对象获取互斥锁来实现同步的.它可以保证当一个线程在关键

  • C# 基础入门--关键字

    例子: using System; using System.Collections.Generic; using System.Text; namespace Test { class Program { static void Main(String[]args) { Console.WriteLine("Hello World!"); } } } 1.关键字 class ,这个关键字的用途是声明类,是C#程序最小单元,比如上面例子中,类名叫做Program. 2.关键字 name

  • C# dynamic关键字的使用方法

    C#是一种类型安全的编程语言(所有表达式都能解析成某个类型的实例,在编译器生成的代码中,只会执行对这个类型有效的操作),和非类型安全的语言相比,类型安全的优势就体现出来了:1.许多错误能在编译时检测到,取保代码在执行它之前是正确的.2.编译时语言通常能生成更小,更快的代码.(在编译时进行更多的假设,并在IL和元数据中落实那些假设) 为了方便开发人员使用反射或者与基本组件通信,dynamic诞生了!一下代码展示了如何利用反射在一个String目标("根据我找类型")上调用一个方法(&qu

  • C#中Override关键字和New关键字的用法详解

    C# 语言经过专门设计,以便不同库中的基类与派生类之间的版本控制可以不断向前发展,同时保持向后兼容.这具有多方面的意义.例如,这意味着在基类中引入与派生类中的某个成员具有相同名称的新成员在 C# 中是完全支持的,不会导致意外行为.它还意味着类必须显式声明某方法是要重写一个继承方法,还是一个隐藏具有类似名称的继承方法的新方法. 在 C# 中,派生类可以包含与基类方法同名的方法. 基类方法必须定义为 virtual. 如果派生类中的方法前面没有 new 或 override 关键字,则编译器将发出警

  • C# 的关键字详细介绍

    用于修饰类,方法,属性和字段的关键字:  首先从最简单的private,protected,internal,public 解释. public 和internal 修饰类. public,protected,private 修饰方法. 修饰类的时候: public 代表公开,也就是所有程序集都可以访问这个类. internal 代表内部的,也就是只有在同一程序集中才能访问这个类,一般而言同一程序集就是同一个dll. 修饰方法的时候: public 代表公开,也就是所有的类都可以访问这个方法.

  • C#中的yield关键字的使用方法介绍

    yield不能单独放在try-catch块中,如果try中有yield那么,这个try块后面不许跟着finally块:也不能出现在匿名方法中,所以,看起来yield似乎并不常用,但是也不是不用.我前面有一个关于迭代器的例子<C#中的迭代器基础>中就用到了.可以参考一下那个例子,但是这里要再说的一点是我后来看到的,yield是跟return一起使用的,形式为yield return xxx,一般来说单独的return在每个方法中只能存在一个.而yield则不同的是,可以出现连续多个.迭代器,是一

  • c#中var关键字用法浅谈

    VAR 是3.5新出的一个定义变量的类型其实也就是弱化类型的定义VAR可代替任何类型编译器会根据上下文来判断你到底是想用什么类型的 至于什么情况下用到VAR   我想就是你无法确定自己将用的是什么类型就可以使用VAR     类似 OBJECT但是效率比OBJECT高点 使用var定义变量时有以下四个特点:1. 必须在定义时初始化.也就是必须是var s = "abcd"形式,而不能是如下形式:var s;s = "abcd";2. 一但初始化完成,就不能再给变量赋

  • C# this关键字的四种用法

    本文实例为大家分享了C# this关键字的四种用法,供大家参考,具体内容如下 用法一  this代表当前实例,用this.显式调用一个类的方法和成员 namespace Demo { public class Test { private string scope = "全局变量"; public string getResult() { string scope = "局部变量"; // 在这里,this代表Test的实例,所以this.scope指向的是全局变量

  • C# yield关键字详解

    对于yield关键字我们首先看一下msdn的解释: 如果你在语句中使用 yield 关键字,则意味着它在其中出现的方法.运算符或 get 访问器是迭代器. 通过使用 yield 定义迭代器,可在实现自定义集合类型的 IEnumerable和 IEnumerator模式时无需其他显式类(保留枚举状态的类,有关示例,请参阅 IEnumerator<T>). yield是一个语法糖 看msdn 的解释总是让人感觉生硬难懂.其实yield关键字很好理解.首先我们对于性质有个了解.yield是一个语法糖

随机推荐