c sharp language specification
### C#语言规范知识点概述 #### 一、引言 - **Hello World示例**:在C#中,一个简单的“Hello World”程序通常作为学习该语言的入门案例。它展示了如何创建一个基本的控制台应用程序,其中包括使用`Console.WriteLine`方法来输出文本到控制台。 - **程序结构**:C#程序的基本结构包括命名空间、类以及主方法等组成部分。每个C#程序至少包含一个命名空间,并且通常会有一个名为`Main`的方法作为程序的入口点。 - **类型与变量**:C#支持多种数据类型,包括但不限于整型(`int`)、浮点型(`float`、`double`)、布尔型(`bool`)、字符型(`char`)等。变量用于存储这些类型的值。 - **表达式**:C#中的表达式是计算结果的一系列操作,如算术表达式、逻辑表达式等。例如,`a + b`是一个算术表达式。 - **语句**:语句是在C#中执行动作的基本单元,比如赋值语句(`x = 5`)或条件语句(`if (x > 0)`)。 - **类与对象**:类是C#中面向对象编程的核心概念之一,它是对象的蓝图,定义了对象的属性和行为。对象则是类的具体实例。 #### 二、类与对象详解 - **成员**:类可以包含多种成员,如字段、方法、构造函数等。 - **可访问性**:成员的可见性和访问权限可以通过关键字(如`public`、`private`)来控制。 - **类型参数**:泛型是C#的一个重要特性,允许开发者定义具有类型参数的类或方法,提高了代码的复用性和灵活性。 - **基类**:继承是面向对象编程的关键特性之一,一个类可以从另一个类继承属性和行为。在C#中,一个类可以继承自另一个类,这个被继承的类称为基类或父类。 - **字段**:字段是类中的变量,用于存储数据。根据访问级别不同,字段可以是私有的、公有的或受保护的。 - **方法**:方法是类中定义的功能模块,用于执行特定任务。方法可以接受参数,并且可以返回一个值。 - **参数**:方法可以接收零个或多个参数。参数可以在方法定义时声明,并在调用方法时传递值。 - **方法体与局部变量**:方法体包含了实现方法功能的代码。局部变量是在方法体内定义的变量,其作用域仅限于该方法内部。 - **静态与实例方法**:静态方法属于类本身,而实例方法则属于类的实例。静态方法可以直接通过类名调用,而实例方法需要先创建类的对象。 - **虚方法、重写方法与抽象方法**:虚方法可以被子类重写,重写方法必须与虚方法具有相同的方法签名,并且必须使用`override`关键字。抽象方法只能在抽象类中声明,并且没有方法体,必须由派生类实现。 - **方法重载**:当一个类中有多个同名但参数不同的方法时,称这些方法为重载方法。重载提供了一种通过相同的方法名称但使用不同参数列表来区分的方法。 - **其他函数成员** - **构造函数**:构造函数是一种特殊的方法,用于初始化新创建的对象。C#支持默认构造函数以及带参数的构造函数。 - **属性**:属性提供了一种简单的方式来读取、编写或计算一个私有字段的值,它看起来像一个公开的字段,但实际上是一对`get`和`set`方法。 - **索引器**:索引器使类的行为类似于数组,可以使用索引来访问对象。 - **事件**:事件是.NET框架的一部分,用于实现发布/订阅模式。事件允许一个对象向其他对象广播消息。 - **运算符**:C#支持多种运算符,包括算术运算符、比较运算符、逻辑运算符等。 - **析构函数**:析构函数是一种特殊的方法,用于释放非托管资源。析构函数没有名字,也没有任何参数,并且自动调用。 #### 三、其他数据类型与结构 - **结构体**:结构体是一种值类型,用于表示单个复杂的数据项。与类不同的是,结构体总是按值传递。 - **数组**:数组是一种存储固定大小的同类型元素的集合。C#支持一维数组、多维数组以及不规则数组。 - **接口**:接口定义了一个公共的契约,该契约规定了实现该接口的类必须实现的方法、属性、索引器和事件。 - **枚举**:枚举是一种特殊的类,它提供了有限数量的命名常量,用于表示一组相关的值。 - **委托**:委托是一种引用类型,它可以存储对方法的引用。委托用于实现事件处理程序以及回调机制。 - **属性**:属性是一种特殊的成员,它使类的行为类似于公共字段,但实际上是一对`get`和`set`方法。 - **索引器**:索引器是一种特殊的成员,它允许类像数组一样使用索引访问成员。 - **事件**:事件是一种特殊的成员,它允许类向其他对象广播消息。 #### 四、词法结构 - **程序结构**:C#程序的基本结构包括命名空间、类以及主方法等组成部分。 - **语法**:C#语法包括词法规则、语法规则等。 - **词法规则**:词法规则定义了源代码中词汇的构成规则,如标识符、关键字、注释等。 - **语法规则**:语法规则定义了源代码的结构,如表达式的构成方式等。 - **词汇分析**:词汇分析是指将源代码分解成一系列的标记(token)的过程。 - **行终止符**:C#源代码中的行终止符主要用于分隔不同的语句。 - **注释**:C#支持两种类型的注释:单行注释和多行注释。单行注释以`//`开始,多行注释以`/*`开始并以`*/`结束。 - **空白字符**:空白字符如空格、制表符等,在C#中通常会被编译器忽略。 - **标记**:标记是C#源代码的基本组成单位,包括标识符、关键字、文字、运算符等。 - **Unicode字符转义序列**:C#支持Unicode字符转义序列,用于表示特定的Unicode字符。 - **标识符**:标识符用于命名变量、方法、类等。有效的标识符必须以字母或下划线开头,后跟任意数量的字母、数字或下划线。 - **关键字**:关键字是C#中具有特殊意义的预定义单词,不能用作标识符。 - **文字**:文字是用来表示固定值的符号,如整数、实数、字符、字符串等。 - **布尔文字**:布尔文字包括`true`和`false`。 - **整数文字**:整数文字可以是十进制、十六进制或八进制形式。 - **实数文字**:实数文字可以是双精度或单精度形式。 - **字符文字**:字符文字由单个字符组成,使用单引号括起来。 - **字符串文字**:字符串文字是由零个或多个字符组成的序列,使用双引号括起来。 - **空文字**:`null`表示一个值类型的变量未被分配任何内存空间。 - **运算符与分隔符**:运算符包括算术运算符、关系运算符、逻辑运算符等。分隔符如逗号、分号等,用于分隔不同的标记。 #### 五、预处理指令 - **预处理指令**:预处理指令是C#源代码中的一些特殊指令,它们在编译之前被处理。预处理指令包括条件编译符号、条件编译指令、区域指令等。 - **条件编译符号**:条件编译符号用于指定某些代码段是否应该被编译。 - **预处理表达式**:预处理表达式用于在编译时进行条件判断。 - **声明指令**:声明指令用于定义符号或设置符号的值。 - **条件编译指令**:条件编译指令用于根据预定义的条件决定哪些代码应该被编译。 - **诊断指令**:诊断指令用于控制编译时的警告和错误消息。 - **区域指令**:区域指令用于为源代码指定区域。 - **行指令**:行指令用于修改当前源代码的位置信息。 - **Pragma指令**:Pragma指令用于控制编译器的行为,如警告的启用或禁用。 #### 六、基本概念 - **应用启动**:C#应用程序的启动过程通常是从主方法(`Main`方法)开始。 - **应用终止**:C#应用程序的终止可以通过`Environment.Exit`方法或其他异常情况触发。 - **声明**:声明是C#中定义变量、方法等的基本方式。 - **成员**:成员是类中的组成部分,包括字段、方法、属性等。 - **命名空间成员**:命名空间成员包括类、接口、枚举等。 - **结构成员**:结构成员包括字段、方法、属性等。 - **枚举成员**:枚举成员是一组固定的命名常量。 - **类成员**:类成员包括字段、方法、属性等。 - **接口成员**:接口成员包括方法、属性等。 - **数组成员**:数组成员是指数组中的各个元素。 - **委托成员**:委托成员是指委托类型的变量或字段。
- qwers12358792014-04-02有用 感谢分享
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助