一:C# 介绍 p C# 是一种简洁、类型安全的面向对象的语言,开发人员可以使用它来构建在 .NET Framework 上运行的各种安全、可靠的应用程序。 p C# 作为一种面向对象的语言,支持封装、继承和多态性概念。所有的变量和方法,包括 Main 方法(应用程序的入口点),都封装在类定义中。 二:C#述语 p 访问修饰符: Ø 用于限制对类型或类型成员的访问的关键字,如 [url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/654c0bb8-e6ac-4086-bf96-7474fa6aa1c8.htm]private[/url]、[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/05ce3794-6675-4025-bddb-eaaa0ec22892.htm]protected[/url]、[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/6ee0785c-d7c8-49b8-bb72-0a4dfbcb6461.htm]internal[/url] 或 [url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/0ae45d16-a551-4b74-9845-57208de1328e.htm]public[/url]。 p 可访问成员: Ø 一种可由给定类型访问的成员。一种类型的可访问成员不一定可由另一种类型访问。 p 访问器(accessor): Ø 设置或检索与属性关联的私有数据成员的值的方法。读写属性具有 get 和 set 访问器。只读属性只有 get 访问器。 p 匿名方法: Ø 匿名方法是作为参数传递给[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/0bb8cb6d-2f87-47c7-9d1f-d65c1cd01e9f.htm]委托[/url]的代码块。 p 基类: Ø 一种由其他“派生”类继承的[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/b95d8815-de18-4c3f-a8cc-a0a53bdf8690.htm]类[/url]。 p 调用堆栈: Ø 运行时从程序的开始位置到当前正在执行的语句的一系列方法调用。 p 类(class): Ø 一种描述对象的数据类型。类不仅包含数据,还包含作用于数据的方法。 p 构造函数 (constructor) : Ø 类或结构中用于初始化该类型的对象的一种特殊方法。 p 委托 (delegate): Ø 委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。 p 派生类: Ø 一种使用继承获取、扩展或修改其他“基”类的行为和数据的[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/b95d8815-de18-4c3f-a8cc-a0a53bdf8690.htm]类[/url]。 p 析构函数: Ø [url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/b95d8815-de18-4c3f-a8cc-a0a53bdf8690.htm]类[/url]或[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/ff3dd9b7-dc93-4720-8855-ef5558f65c7c.htm]结构[/url]中用于准备要由系统销毁的实例的一种特殊方法。有关更多信息。 p 事件(event): Ø [url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/b95d8815-de18-4c3f-a8cc-a0a53bdf8690.htm]类[/url]或[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/ff3dd9b7-dc93-4720-8855-ef5558f65c7c.htm]结构[/url]的一个成员,用于发送更改通知。 p 字段(field): Ø [url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/b95d8815-de18-4c3f-a8cc-a0a53bdf8690.htm]类[/url]或[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/ff3dd9b7-dc93-4720-8855-ef5558f65c7c.htm]结构[/url]的一个可直接访问的数据成员。 p 泛型 (generics) : Ø 使用泛型,可以定义使用类型参数定义的[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/b95d8815-de18-4c3f-a8cc-a0a53bdf8690.htm]类[/url]和/或方法。当客户端代码实例化类型时,会指定一个特定的类型作为参数。 p 不可变类型 (immutable type) : Ø 一种类型,其实例数据(字段和属性)在创建后不会更改。大多数值类型都属于不可变类型。 p 不可访问的成员: Ø 无法由给定类型访问的成员。一种类型的不可访问的成员并不一定对另一种类型是不可访问的。 Ø o 继承: Ø C# 支持继承,因此从其他类(也称为基类)派生的[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/b95d8815-de18-4c3f-a8cc-a0a53bdf8690.htm]类[/url]将继承相同的方法和属性。继承涉及基类和派生类。 p 接口 (interface): Ø 一种只包含公共方法、事件和委托的签名的类型。继承接口的对象必须实现该接口中定义的所有方法和事件。类或结构可以继承任意数目的接口。 p 跌代器(iterator): Ø 迭代器是这样一种方法,它允许包含集合或数组的[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/b95d8815-de18-4c3f-a8cc-a0a53bdf8690.htm]类[/url]的使用者使用 [url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/5a9c5ddc-5fd3-457a-9bb6-9abffcd874ec.htm]foreach[/url][url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/5a9c5ddc-5fd3-457a-9bb6-9abffcd874ec.htm],[/url][url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/5a9c5ddc-5fd3-457a-9bb6-9abffcd874ec.htm]in[/url]循环访问该集合或数组。 p Member: Ø 在[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/b95d8815-de18-4c3f-a8cc-a0a53bdf8690.htm]类[/url]或[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/ff3dd9b7-dc93-4720-8855-ef5558f65c7c.htm]结构[/url]上声明的字段、属性、方法或事件。 p 方法: Ø 一个提供[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/b95d8815-de18-4c3f-a8cc-a0a53bdf8690.htm]类[/url]或[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/ff3dd9b7-dc93-4720-8855-ef5558f65c7c.htm]结构[/url]的行为的命名代码块。 o 可变类型 (mutable type): Ø 一种类型,其实例数据(字段和属性)在创建后可以更改。大多数[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/801cf030-6e2d-4a0d-9daf-1431b0c31f47.htm]引用类型[/url]都属于可变类型。 p 嵌套类型 (nested type): Ø 在另一个类型的声明内声明的类型。 p Object: Ø [url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/b95d8815-de18-4c3f-a8cc-a0a53bdf8690.htm]类[/url]的实例。对象存在于内存中,具有数据和作用于这些数据的方法。 p 属性 (property): Ø 通过访问器访问的数据成员。 p 重构 (refactoring): Ø 重用以前输入的代码。 p 引用类型 (reference type): Ø 一种数据类型。声明为引用类型的变量指向存储数据的位置。 o Static: Ø 声明为静态的类或方法不必首先使用关键字 new 进行实例化就可存在。Main() 就属于静态方法。 p 结构 (struct) : Ø 一种复合数据类型,通常用于包含具有某种逻辑关系的多个变量。结构还可以包含方法和事件。结构不支持继承,但支持接口。结构是[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/471eb994-2958-49d5-a6be-19b4313f80a3.htm]值类型[/url],而[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/b95d8815-de18-4c3f-a8cc-a0a53bdf8690.htm]类[/url]是[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/801cf030-6e2d-4a0d-9daf-1431b0c31f47.htm]引用类型[/url]。 p 值类型 (value type): Ø 值类型是在堆栈上分配的数据类型,与在堆上分配的引用类型不同。[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/54f901f2-bf2f-472c-ae8d-73e8ecfc57fe.htm]内置类型[/url](包括数值类型以及结构类型和可空类型)都属于值类型。[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/b95d8815-de18-4c3f-a8cc-a0a53bdf8690.htm]类[/url]类型和[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/3037e558-fb22-494d-bca1-a15ade11b11a.htm]字符串[/url]类型属于[url=ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/801cf030-6e2d-4a0d-9daf-1431b0c31f47.htm]引用类型[/url]。 三:C#关键字 ―――――类型 o 值类型: Ø 枚举类型 Ø 结构类型 Ø 简单类型 ü 整数类型: sbyte、byte、short、ushort、int、uint、long、ulong ü 布尔类型: true、false ü 字符类型: char ü 实数类型: 浮点类型float、double和十进制类型decimal o 引用类型: Ø 类(class) Ø 接口(interface) Ø 委托(delegate) Ø Object Ø String p Void ―――――修饰符 o 访问修饰符: Ø public 访问不受限制。 Ø protected 访问仅限于包含类或从包含类派生的类型。 Ø internal 访问仅限于当前程序集。 Ø protected internal 访问仅限于从包含类派生的当前程序集或类型。 Ø private 访问仅限于包含类型。 p Abstract: Ø 在类声明中使用 abstract 修饰符以指示某个类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。abstract 修饰符可以和类、方法、属性、索引器及事件一起使用。 p Const: Ø const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值是常数,不能被修改。 p Event: Ø 用于指定事件,类和结构使用事件将出现的可能影响对象状态的事件通知给对象。 o Extern: Ø extern 修饰符用于声明在外部实现的方法。extern 修饰符的常见用法是在使用 Interop 服务调入非托管代码时与 DllImport 属性一起使用;在这种情况下,该方法还必须声明为 static,extern 关键字还可以定义外部程序集别名,使得可以从单个程序集中引用同一组件的不同版本。 p Override: Ø 用来扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现。不能使用修饰符 new、static、virtual 或 abstract 来修改 override 方法。 p Readonly: Ø 当字段声明包括 readonly 修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中。 Ø Sealed: Ø sealed 修饰符可以应用于类、实例方法和属性。密封类不能被继承。密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。 o Static: Ø 使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员。static 修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型。 p Unsafe: Ø unsafe 关键字表示不安全上下文,该上下文是任何涉及指针的操作所必需的。 p Virtual: Ø virtual 关键字用于修饰方法、属性、索引器或事件声明,并且允许在派生类中重写这些对象。 p volatile : Ø 关键字表示字段可能被多个并发执行线程修改。 ―――――语句类型 p 选择语句: if, else, switch, case p 迭代语句: do, for, foreach, in, while p 跳转语句:break, continue, default, goto, return,yield p 异常处理语句: throw, try-catch, try-finally, try-catch-finally p 检查和未检查: checked, unchecked p Fixed 语句: fixed p Lock 语句: lock ―――――方法参数 o Params: Ø params 关键字可以指定在参数数目可变处采用参数的方法参数。 Ø 在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。 p Out: Ø out 关键字会导致参数通过引用来传递。 Ø 方法定义和调用方法都必须显式使用 out 关键字。 Ø 传递到 out 参数的参数必须最先初始化,返回前赋值. p Ref: Ø ref 关键字使参数按引用传递。 Ø 方法定义和调用方法都必须显式使用 ref 关键字。 Ø 传递到 ref 参数的参数必须最先初始化。在方法中对参数所做的任何更改都将反映在该变量中。 ―――――命名空间 o Namespace: Ø namespace 关键字用于声明一个范围。此命名空间范围允许您组织代码并为您提供了创建全局唯一类型的方法。 p using: Ø 作为指令,用于为命名空间创建别名或导入其他命名空间中定义的类型。 ü 允许在命名空间中使用类型,以便您不必限定在该命名空间中使用的类型。 ü 为命名空间创建别名。 Ø 作为语句,用于定义一个范围,在此范围的末尾将释放对象。 p 外部别名: Ø extern 关键字还用作方法修饰符,声明用非托管代码编写的方法。 ―――――运算符 p as 将对象转换为可兼容类型。 p is 检查对象的运行时类型。 p new Ø new 运算符 创建对象。 Ø new 修饰符 隐藏继承成员。 Ø new 约束 限定类型参数。 p sizeof 获取类型的大小。 p typeof 获取类型的 System.Type 对象。 p true Ø true 运算符 返回布尔值 true 表示真,否则返回 false。 Ø true 表示布尔值 true。 p false Ø false 运算符 返回布尔值 true 表示假,否则返回 false。 Ø false 表示布尔值 false。 p stackalloc 在堆栈上分配内存块。 ―――――访问 p base: Ø 访问基类的成员。 p this: Ø 引用类的当前实例。 ―――――上下文 p get Ø 为属性或索引器定义访问器方法。 p partial Ø 在整个同一编译单元内定义分部类、结构和接口。 p set Ø 为属性或索引器定义访问器方法。 p where Ø 向泛型声明中添加约束。 p Yield Ø 在迭代器块中使用,用于向枚举数对象返回值或发信号结束迭代。 p Value Ø 用于设置访问器和添加或移除事件处理程序。 |