### C#语言规范知识点概述 #### 一、简介 **1.1 HelloWorld 示例** - **定义**: “HelloWorld”示例通常作为初学者接触新编程语言的第一个程序,它用于展示如何在C#中输出简单的文本到控制台。 - **代码**: `Console.WriteLine("Hello, World!");` - **意义**: 它不仅演示了基本的输出操作,还帮助理解C#的基本语法结构。 **1.2 程序结构** - **组成部分**: - **命名空间**: 组织和提供代码复用的一种方式。 - **类**: 包含数据和行为的数据类型。 - **方法**: 类中的函数,用于执行特定任务。 - **示例**: ```csharp namespace HelloWorld { class Program { static void Main(string[] args) { Console.WriteLine("Hello, World!"); } } } ``` **1.3 类型和变量** - **类型分类**: - **值类型**: - **整型**: 如`int`, `long`等。 - **浮点型**: 如`float`, `double`。 - **布尔型**: `bool`。 - **枚举类型**: 定义一组命名常量。 - **引用类型**: - **类**: 自定义类型。 - **接口**: 定义行为。 - **数组**: 存储同类型元素的集合。 - **字符串**: 字符串类型。 - **变量声明**: - `int age = 25;` - `string name = "John";` **1.4 表达式** - **算术运算**: - 加法: `+`, 减法: `-`, 乘法: `*`, 除法: `/`, 取模: `%`. - **逻辑运算**: - 与: `&&`, 或: `||`, 非: `!`. - **赋值运算**: - `=`. **1.5 语句** - **条件语句**: `if`, `else`, `switch`. - **循环语句**: `for`, `while`, `do-while`. - **跳转语句**: `break`, `continue`, `return`. #### 二、类和对象 **1.6.1 成员** - **成员分类**: - **字段**: 存储数据。 - **方法**: 执行操作。 - **属性**: 提供对私有字段的安全访问。 - **索引器**: 使用索引来访问集合中的元素。 - **事件**: 处理对象间通信。 **1.6.2 可访问性** - **修饰符**: - `public`: 公开访问。 - `private`: 私有访问。 - `protected`: 在类或派生类中访问。 - `internal`: 在同一程序集内访问。 - `protected internal`: 在同一程序集或派生类中访问。 **1.6.3 类型形参** - **泛型类型**: 通过允许在类或方法定义中使用类型参数来实现类型安全性。 - **示例**: ```csharp public class GenericClass<T> { private T data; public GenericClass(T data) { this.data = data; } public T GetData() { return data; } } ``` **1.6.4 基类** - **继承**: 类可以从另一个类继承属性和方法。 - **示例**: ```csharp public class BaseClass { ... } public class DerivedClass : BaseClass { ... } ``` **1.6.5 字段** - **存储数据**: - `private int age;` - `public string Name { get; set; }` **1.6.6 方法** - **参数**: - **值参数**: `void Method(int value)` - **引用参数**: `void Method(ref int refValue)` - **输出参数**: `void Method(out int outValue)` - **方法体和局部变量**: - 局部变量只在方法体内可见。 - **静态方法和实例方法**: - **静态方法**: 不依赖于任何实例状态。 - **实例方法**: 依赖于特定对象的状态。 - **虚方法、重写方法和抽象方法**: - **虚方法**: 可被派生类重写。 - **重写方法**: 在派生类中实现基类的虚方法。 - **抽象方法**: 必须在派生类中实现的方法。 - **方法重载**: - 通过提供不同数量或类型的参数来创建多个具有相同名称的方法。 **1.6.7 其他函数成员** - **构造函数**: - 用于初始化新对象。 - **属性**: - 提供对私有字段的安全访问。 - **索引器**: - 使类能够像数组一样使用索引。 - **事件**: - 对象间通信机制。 - **运算符**: - 重载运算符以支持自定义类型的操作。 - **析构函数**: - 在对象销毁之前释放资源。 #### 三、其他核心概念 **1.7 结构** - **值类型**: - `struct`: 结构类型。 - **示例**: ```csharp struct Point { public int X; public int Y; } ``` **1.8 数组** - **声明**: - `int[] numbers;` - **初始化**: - `numbers = new int[5];` - **多维数组**: - `int[,] matrix = new int[3, 4];` **1.9 接口** - **定义行为**: - `public interface IComparable { int CompareTo(object obj); }` **1.10 枚举** - **定义一组命名常量**: - `enum Color { Red, Green, Blue };` **1.11 委托** - **引用方法**: - `delegate void MyDelegate();` **1.12 属性** - **封装字段**: - `public int Age { get; set; }` ### 四、词法结构 **2.1 程序** - **定义**: C#程序由一个或多个命名空间组成,每个命名空间包含类和其他类型。 **2.2 文法** - **表示法**: - **词法文法**: 描述了源代码中的标记。 - **句法文法**: 描述了源代码中有效程序的结构。 **2.3 词法分析** - **过程**: 将源代码分解成标记的过程。 **2.4 标记** - **Unicode字符转义序列**: - `\uXXXX`: 用于表示非ASCII字符。 - **标识符**: - 用于命名类型、变量等。 - **关键字**: - 如`class`, `interface`, `for`, `if`等。 - **文本**: - 包括各种数值类型、布尔值、字符串等。 **2.5 预处理指令** - **条件编译**: - `#if DEBUG`, `#endif`. - **声明指令**: - `#region`, `#endregion`. - **条件编译指令**: - `#if`, `#else`, `#elif`, `#endif`. - **诊断指令**: - `#warning`, `#error`. - **区域指令**: - `#region`, `#endregion`. - **行指令**: - `#line`. - **Pragma指令**: - `#pragma warning disable` (暂时关闭警告). ### 五、基本概念 **3.1 应用程序启动** - **主入口点**: - `static void Main(string[] args)` **3.2 应用程序终止** - **正常退出**: - `Environment.Exit(0);` - **异常退出**: - 通过抛出未捕获的异常来终止程序。 **3.3 声明** - **变量声明**: - `int number;` - **方法声明**: - `public void MethodName()` **3.4 成员** - **命名空间成员**: - 类、接口等。 - **类成员**: - 字段、方法、属性等。 - **接口成员**: - 方法、属性等。 **3.5 成员访问** - **已声明可访问性**: - 通过访问修饰符确定。 - **实例成员的受保护访问**: - 仅在当前类或派生类中访问。 **3.6 签名和重载** - **方法签名**: - 方法名加上参数列表。 - **重载**: - 同一作用域内的多个方法可以拥有相同的名字但不同的参数列表。 **3.7 范围** - **名称隐藏**: - **通过嵌套隐藏**: 当一个内部类的成员与其外部类的成员具有相同的名字时。 - **通过继承隐藏**: 派生类中成员的名称与基类中成员的名称相同。 **3.8 命名空间和类型名称** - **完全限定名**: - 包含完整命名空间路径的类型名称。 - 例如:`System.Collections.Generic.List<T>` **3.9 自动内存管理** - **垃圾回收机制**: - C#通过.NET运行时自动管理内存分配和回收。 **3.10 执行顺序** - **顺序执行**: - 程序按源代码中的顺序执行。 ### 六、类型 **4.1 值类型** - **System.ValueType类型**: - 所有值类型的基类。 - **结构类型**: - `struct`: 用户定义的值类型。 - **简单类型**: - 如`int`, `float`, `bool`等。 **4.2 引用类型** - **类类型**: - `class`: 用户定义的引用类型。 - **对象类型**: - `object`: 所有引用类型的基类。 - **string类型**: - 字符串类型。 - **接口类型**: - `interface`: 定义行为。 - **数组类型**: - `T[]`: 泛型数组类型。 - **委托类型**: - `delegate`: 代表方法的引用类型。 **4.3 装箱和拆箱** - **装箱转换**: - 值类型转换为引用类型。 - **拆箱转换**: - 引用类型转换为值类型。 **4.4 构造类型** - **类型实参**: - 泛型类型的参数。 - **开放和封闭类型**: - 开放类型: 使用类型参数。 - 封闭类型: 没有类型参数。 - **绑定和未绑定类型**: - 绑定类型: 已知类型参数的具体类型。 - 未绑定类型: 类型参数未知。 **4.5 类型形参** - **通用类型参数**: - 用于创建泛型类型或方法。 **4.6 表达式目录树类型** - **表示表达式树**: - 一种特殊的类型,用于表示表达式的结构。 ### 七、变量 **5.1 变量类别** - **静态变量**: - 在整个程序运行期间都存在。 - **实例变量**: - 每个对象都有自己的副本。 - **数组**: - 用于存储相同类型的元素集合。 以上是C#语言规范的基础知识点概述,涵盖了从程序结构到变量声明,再到类型和对象的概念介绍。对于学习和使用C#的开发者来说,掌握这些基础知识是非常重要的。
剩余499页未读,继续阅读
- 粉丝: 0
- 资源: 21
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Vulkan、DirectX 12 和 Metal 的 GPU 内存分配器 用纯 Rust 编写.zip
- Android Studio实现的校园二手交易系统毕业设计校园二手交易App项目源码
- Java学习资源综合指南
- 数字化转型:无形资产占比测算(2007-2022年).zip
- Vulkan 和 DirectX 12 挂钩可让您为 Red Dead Redemption 2 创建 ImGui 菜单.zip
- 汇编语言学习资源汇总-x86架构与实践指南
- 源于高考题的中文微调数据集
- VSCode + CMake + nmake(MSVC) + DirectX 示例.zip
- Voodoo Shader 改进并扩展了新旧游戏中的图形 它速度快、稳定、开源,可在 ATi,AMD 和 nVidia 上使用 DirectX 或 OpenGL 运行 .zip
- 机器人开发综合指南-涵盖编程、操作系统及硬件资源