C#关键字及其用法整理

C#关键字及其用法整理
C#(读做 "C sharp",中文译音暂时没有专业人士一般读"C sharp",现在很多非专业一般读"C井"。C#是 微软公司 发布的一种面向对象的、运行于.NET Framework之上的高级 程序 设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与 Java 有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows网络框架的主角,并且C#成为ECMA与ISO标准规范。
abstract: 应用于抽象类中,与 override 连用
注意:抽象类使用方法: 1. 不能创建抽象类的实例(其中的类不允许给出实现);
                      2. 不能在抽象类外声明抽象方法;
                      3. 不能被声明为封装。
抽象类中未必有抽象方法,抽象方法必须存在于抽象类中
as:  as 用于在兼容的引用类型之间执行转换,类似于强制转换,所不同的是,当转换失败时,运算符将产生空,而不是引发异常 
注意:as 运算符只执行引用转换和装箱转换。as 运算符无法执行其他转换,如用户定义的转换
base : base 关键字用于从派生类中访问基类的成员:(1)调用基类上已被其他方法重写的方法。(2)指定创建派生类实例时应调用的基类构造函数。
注意:1.基类访问只能在构造函数、实例方法或实例属性访问器中进行。
2.从静态方法中使用 base 关键字是错误的。
bool: 布尔类型( true false ),占一个字节
break:1. 用于循环结构中,以结束整个循环 ;
       break continue 的区别: break 是结束整个循环,而 continue 只是跳出此次的循环,即刻进行下一个循环
      2. 用于 switch…case 条件结构中
byte: 字符型, 8 位整数(无符号),占一个字节
case: 应用于 switch…case 语句中
注意: case 后面若为‘ 3 ’或 3 ,则应取决于 switch 后面的数据类型,若为字符,则是‘ 3 ’,若是整型,则为 3
catch: 用于捕获程序中的异常,与 try 连用
char: 字符型,占两个字节
checked: checked 操作符用于整型算术运算时控制当前环境中的溢出检查
class: 用于声明一个类(类命名与变量的命名规则比较省)
const: 用于创建常量,并且立刻指定其初始值,常量必须声明其类型,且常量的值一旦被指定便无法更改
continue: 应用于 while 循环中,跳出此次循环,即可进行下一个 while 循环(与 break 区别略)
decimal: 一种相当精确的带小数点数的表示形式
default:  default 关键字可在 switch 语句或泛型代码中使用。
(1) switch 语句 :指定默认标签;(2) 泛型代码 :指定类型参数的默认值。这对于引用类型为 null,对于值类型为零。
delegate: 应用于代理中
附:代理的分类:( 1 )单播代理:一次仅调用一个方法;( 2 )多播代理:一次可同时调用多个方法,要求所有代理的返回值都相同且为 void
do: 应用于 do…while 循环中
注意: while 循环与 do…while 循环的区别: do…while 语句在每次循环执行完毕之后作条件值判断,而 while 语句则是在每一次循环执行前作判断,所以 do…while 循环当中的程序区块至少执行一次
double: 双精度浮点数,占八个字节
else: 用于 if…else 条件语句中
enum: 声明枚举类型
注意:每个枚举元素代表的数值在缺省的情况下第一个元素的值从 0 开始,然后依次增加 1 ;而若你将第二个数赋值为 5 ,则第一个数为 4 ,第三个数为 6 ,依此类推
event: 声明一个全新的事件
explicit:  explicit 关键字用于声明必须使用强制转换来调用的用户定义的类型转换运算符
extern:  extern 修饰符用于声明在外部实现的方法。extern 修饰符的常见用法是在使用 Interop 服务调入非托管代码时与  DllImport  属性一起使用。在这种情况下,还必须将方法声明为 static
false: 布尔类型,占一个字节
finally: 用于在程序中,无论异常是否被抛出,都要执行的一个给定的语句集, try 块后面 finally 不是必需的
fixed:  fixed语句禁止垃圾回收器重定位可移动的变量。fixed语句只能出现在 不安全 的上下文中。fixed还可用于创建 固定大小的缓冲区 。fixed语句设置指向托管变量的指针,并在执行该语句期间 固定 此变量。如果没有fixed语句,则指向可移动托管变量的指针的作用很小,因为垃圾回收可能不可预知地重定位变量。 C#  编译器只允许在fixed语句中分配指向托管变量的指针。可以用数组或字符串的地址初始化指针 ,  只要指针的类型相同,就可以初始化多个指针执行完语句中的代码后,任何固定变量都被解除固定并受垃圾回收的制约。因此,不要指向fixed语句之外的那些变量。无法修改在  fixed  语句中初始化的指针。
float: 浮点型,占四个字节
for: for 循环
注意: for 后三部分:循环的开始数值,循环执行的条件,每次变量值改变的方式
foreach: 专门用来读取集合中的所有元素,将数组中的元素逐一取出,并且输出到控制台
注意: 1. 借用 foreach 的语法,只能一一取得数组中的元素,没有办法利用这种语句改变数组中所存储的元素
      2. 使用语句时,类型必须与所要操作的数组相同
get: 取得数组中的元素
goto: 用于 switch…case 语句中,以从一个 case 跳到另一个 case ,慎用
if: 用于 if…else 条件结构中,
if…else 关键字以后的语句若是超过一行,则必须用大括号围起来,否则可省略大括号
implicit:  implicit 关键字用于声明隐式的用户定义类型转换运算符。如果可以确保转换过程不会造成数据丢失,则可使用该关键字在用户定义类型和其他类型之间进行隐式转换。
in:  in 上下文关键字可在下面两种上下文中使用: 
(1) foreach  语句 ;(2)查询表达式中的  join 子句  
int: 整型, 32 位整数(有符号),占四个字节
interface: 用于声明接口
注意: 1. 接口在实现时不需要加 override
      2. 类和接口最大的区别:类不可以多重继承,而接口可以多重继承
      3. 一个类可以实现多个接口,但不可以有多个基类
      4. 接口限制:( 1 )不允许在接口中包含任何字段,包括 static
2 )不允许在接口中包含任何构造函数
3 )类的缺省访问区分符为 internal ,在类中默认为 private ,在接口中默认为 public
4 )不允许在接口中嵌套任何类型
5 )不允许从 class struct 中继承一个接口
6 )接口可以声明方法,函数,属性,不能在接口中声明变量
internal 访问区分符,使得类能够向其他函数和对象展示其成员变量和成员函数。任何声明为 internal 的成员可以从定义了该成员的应用程序定义的类或方法访问它。类的缺省访问区分符为 internal
is :  is检查对象是否与给定类型兼容。如果所提供的表达式非空,并且所提供的对象可以强制转换为所提供的类型而不会导致引发异常,则is 表达式的计算结果将是 true; 否则为false. 如果已知表达式将始终是 true 或始终是 false,则 is 关键字将导致编译时警告,但是,通常在运行时才计算类型兼容性。
注意:(1)is 运算符只考虑引用转换、装箱转换和取消装箱转换。不考虑其他转换,如用户定义的转换。
(2)不能重载 is 运算符。
(3)在 is 运算符的左侧不允许使用匿名方法。lambda 表达式属于例外。
lock:  lock 关键字可确保当一个线程位于代码的临界区时,另一个线程不会进入该临界区。 如果其他线程试图进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。
注意:1.lock 关键字在块的开始处调用  Enter ,而在块的结尾处调用  Exit
2.通常,应避免锁定 public 类型,否则实例将超出代码的控制范围。 常见的结构  lock (this) lock (typeof (MyType))    lock ("myLock")  违反此准则:(1)如果实例可以被公共访问,将出现  lock (this)  问题。(2)如果  MyType  可以被公共访问,将出现  lock (typeof (MyType))  问题。(3)由于进程中使用同一字符串的任何其他代码都将共享同一个锁,所以出现  lock(“myLock”)  问题。 最佳做法是定义 private 对象来锁定, 或 private static 对象变量来保护所有实例所共有的数据。
long : 长整型, 64 位整数(无符号),占八个字节
namespace: 命名空间
new:  在 C# 中,new 关键字可用作运算符、修饰符或约束。(1) new 运算符  :用于创建对象和调用构造函数。(2) new 修饰符  :用于向基类成员隐藏继承成员。(3) new 约束  :用于在泛型声明中约束可能用作类型参数的参数的类型。
null:  null 关键字是表示不引用任何对象的 null 引用的文字值。null 是引用类型变量的默认值。普通值类型不能为 null。
object: object 类提供了所有类共同的基本属性,方法和行为
operator:  使用 operator 关键字来重载内置运算符,或提供类或结构声明中的用户定义转换。
注意:带要被重载的操作符的 operator 关键字被用作函数名称
out: 声明输出参数,利用引用来传递,不要求在调用方法前对被传递的参数初始化
注意:若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。
override: abstract (抽象类)或 virtual( 虚函数 ) 连用,不与 interface (接口)连用
params:  params 关键字可以指定在参数数目可变处采用参数的 方法参数
注意:在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。
partial:  分部类型定义允许将类、结构或接口的定义拆分到多个文件中。
private: 访问区分符,, private 访问区分符能够隐藏其成员变量和成员函数,是其他类对象和函数不能访问它们,在类之外不能看到类的专用成员,仅该类的函数才能访问它们,即使类的实力也不能访问其专用成员
protected:  访问区分符,能够隐藏其成员变量和成员函数,从而其他的类对象和函数(出了其子类)不能访问它们
public:  访问区分符,使类能够向其他函数和对象显示其成员变量和成员函数,可以从类的外部访问它
public private protected internal 的区别 ( )
readonly:  readonly 关键字是可以在字段上使用的修饰符。当字段声明包括 readonly 修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中。
ref: 声明引用参数,当使用 ref 参数向方法传递参数时,编译器就将实际值在内存的地址传递给方法,因此,如果被调用的方法修改这些值,然后返回,那么调用代码的变量将被修改
注意: 1.ref out 的区别: ref 要求在调用方法之前对被传递的参数初始化, out 则不要求;
2. 通过值传递和通过引用传递的区别:当一个参数以传值的方式传递(值传递)时,变量的值即使在方法中被改变,它本身还是维持一开始传入的值,而以传址方式(引用传递)传入的变量,当方法将其值改变时,此变量的值便永远的更改; C# 默认以传值的方式传递参数。
      3.  若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。
return:return 语句执行一个迅速返回到调用方的方法,如果没有 return 语句,默认情况下,当到达方法中最后一条语句后执行程序才返回到调用方。如果方法为 void ,则可以省略 return 语句
sbyte:8 位整数(有符号),占一个字节
sealed: 声明封装类
注意: 1. 封装类不能被派生;
2. 封装类不能用作基类也不能是抽象类;
3. 方法被封装后不能被重构。
set:set 访问器, set 用于设定数组中的元素值(与属性相同, set 会接受外部传入的值,并自动以名称为 value 的变量存储这个值), -
short: 短整型, 16 位整数(无符号),占两个字节
sizeof: 用来显示不同数据类型的大小,关键字 sizeof 有时会直接访问内存,慎用
注意:不能重载 sizeof 运算符
stackalloc:

你可能感兴趣的:(C#关键字及其用法整理)