没有合适的资源?快使用搜索试试~ 我知道了~
首页C# 5.0语言规范全面解读:从基础到高级特性
C#语言规范5.0中文版是一份详细阐述C#编程语言的关键特性和规则的官方文档。该版本由Microsoft Corporation于1999年至2012年期间发布,旨在为开发者提供编写高效、可维护的C#代码的基础指南。文档涵盖了C#语言的核心概念,包括但不限于:
1. 简介:介绍了Hello World示例,让读者熟悉C#的基本编程结构。这部分内容还概述了C#中的类型系统、变量和表达式,以及基本的控制结构。
2. 类和对象:详细讲解了类的定义、成员(包括字段、方法、构造函数、属性、索引器、事件和运算符)、继承(基类)的概念,以及虚方法、重写、抽象方法和方法重载的重要性。
3. 数据结构:包括结构体(structs)、数组和接口的使用,这些都是组织和存储数据的不同方式。枚举类型也在此部分讨论,它们是常量集合,方便程序中对有限选项进行管理。
4. 委托和特性:委托用于创建可调用的对象,使得可以传递行为(如事件处理)。特性则允许程序员在编译时应用定制化的元数据,以增强代码的灵活性和扩展性。
5. 词法结构与语法:文档详细解释了C#的词法和句法规则,包括程序的组织、文法的表示法、注释的使用,以及如何识别和解析源代码的不同元素,如标记、标识符和关键字。
6. 语言细节:例如行结束符、空白处理和Unicode字符转义序列,这些都是构成正确可读代码的基础。
整个规范文档是C#开发者的必备参考资料,它不仅提供了语言的规则,而且对于理解和遵循C#的编程范式和最佳实践至关重要。通过学习和理解这些内容,开发者能够确保他们的代码符合标准,同时享受到C#语言带来的强大功能和性能。
C# LANGUAGE SPECIFICATION
xvi
版权所有
Microsoft Corporation 1999-2012
。保留所有权利。
17.2 特性说明 ................................................................................................................................................. 403
17.3 特性实例 ................................................................................................................................................. 408
17.3.1 特性的编译 ...................................................................................................................................... 408
17.3.2 特性实例的运行时检索 ................................................................................................................... 409
17.4 保留特性 ................................................................................................................................................. 409
17.4.1 AttributeUsage 特性 ......................................................................................................................... 409
17.4.2 Conditional 特性 ............................................................................................................................... 410
17.4.2.1 条件方法 .................................................................................................................................... 410
17.4.2.2 条件特性类 ................................................................................................................................ 412
17.4.3 Obsolete 特性 ................................................................................................................................... 413
17.4.4 调用方信息特性 .............................................................................................................................. 414
17.4.4.1 CallerLineNumber 特性 ............................................................................................................. 415
17.4.4.2 CallerFilePath 特性 .................................................................................................................... 415
17.4.4.3 CallerMemberName 特性 .......................................................................................................... 415
17.5 互操作的特性 ......................................................................................................................................... 415
17.5.1 与 COM 和 Win32 组件的互操作 ................................................................................................... 416
17.5.2 与其他 .NET 语言的互操作 ............................................................................................................ 416
17.5.2.1 IndexerName 特性 ..................................................................................................................... 416
18. 不安全代码 ................................................................................................................................................... 417
18.1 不安全上下文 ......................................................................................................................................... 417
18.2 指针类型 ................................................................................................................................................. 419
18.3 固定和可移动变量 ................................................................................................................................. 422
18.4 指针转换 ................................................................................................................................................. 422
18.4.1 指针数组 .......................................................................................................................................... 423
18.5 表达式中的指针 ..................................................................................................................................... 424
18.5.1 指针间接寻址 .................................................................................................................................. 425
18.5.2 指针成员访问 .................................................................................................................................. 425
18.5.3 指针元素访问 .................................................................................................................................. 426
18.5.4 address-of 运算符 ............................................................................................................................. 426
18.5.5 指针递增和递减 .............................................................................................................................. 427
18.5.6 指针算术运算 .................................................................................................................................. 427
18.5.7 指针比较 .......................................................................................................................................... 428
18.5.8 sizeof 运算符 .................................................................................................................................... 429
18.6 fixed 语句 ................................................................................................................................................ 429
18.7 固定大小缓冲区 ..................................................................................................................................... 433
18.7.1 固定大小缓冲区的声明 ................................................................................................................... 433
18.7.2 表达式中的固定大小缓冲区 ........................................................................................................... 434
18.7.3 明确赋值 检查 ................................................................................................................................. 435
18.8 堆栈分配 ................................................................................................................................................. 435
18.9 动态内存分配 ......................................................................................................................................... 436
A. 文档注释 ........................................................................................................................................................ 439
A.1 介绍 .......................................................................................................................................................... 439
A.2 建议的标记 .............................................................................................................................................. 440
A.2.1 <c> ..................................................................................................................................................... 441
目录
版权所有
Microsoft Corporation 1999-2012
。保留所有权利。
xvii
A.2.2 <code> ............................................................................................................................................... 441
A.2.3 <example> ......................................................................................................................................... 442
A.2.4 <exception>........................................................................................................................................ 442
A.2.5 <include> ........................................................................................................................................... 443
A.2.6 <list> .................................................................................................................................................. 444
A.2.7 <para> ................................................................................................................................................ 444
A.2.8 <param> ............................................................................................................................................. 445
A.2.9 <paramref> ......................................................................................................................................... 445
A.2.10 <permission>.................................................................................................................................... 446
A.2.11 <remark> .......................................................................................................................................... 446
A.2.12 <returns> .......................................................................................................................................... 446
A.2.13 <see> ................................................................................................................................................ 447
A.2.14 <seealso> ......................................................................................................................................... 447
A.2.15 <summary> ...................................................................................................................................... 448
A.2.16 <value> ............................................................................................................................................ 448
A.2.17 <typeparam> .................................................................................................................................... 448
A.2.18 <typeparamref> ................................................................................................................................ 449
A.3 处理文档文件 .......................................................................................................................................... 449
A.3.1 ID 字符串格式 .................................................................................................................................. 449
A.3.2 ID 字符串示例 .................................................................................................................................. 450
A.4 示例 .......................................................................................................................................................... 454
A.4.1 C# 源代码 .......................................................................................................................................... 454
A.4.2 生成的 XML ...................................................................................................................................... 456
B. 语法 ................................................................................................................................................................ 460
B.1 词法文法 .................................................................................................................................................. 460
B.1.1 行结束符 ............................................................................................................................................ 460
B.1.2 注释 .................................................................................................................................................... 460
B.1.3 空白 .................................................................................................................................................... 461
B.1.4 标记 .................................................................................................................................................... 461
B.1.5 Unicode 字符转义序列 ..................................................................................................................... 461
B.1.6 标识符 ................................................................................................................................................ 461
B.1.7 关键字 ................................................................................................................................................ 463
B.1.8 文本 .................................................................................................................................................... 463
B.1.9 运算符和标点符号 ............................................................................................................................ 465
B.1.10 预处理指令 ...................................................................................................................................... 465
B.2 句法文法 .................................................................................................................................................. 468
B.2.1 基本概念 ............................................................................................................................................ 468
B.2.2 类型 .................................................................................................................................................... 468
B.2.3 变量 .................................................................................................................................................... 469
B.2.4 表达式 ................................................................................................................................................ 469
B.2.5 语句 .................................................................................................................................................... 476
B.2.6 命名空间 ............................................................................................................................................ 480
B.2.7 类 ........................................................................................................................................................ 480
B.2.8 结构 .................................................................................................................................................... 488
B.2.9 数组 .................................................................................................................................................... 488
B.2.10 接口 .................................................................................................................................................. 489
C# LANGUAGE SPECIFICATION
xviii
版权所有
Microsoft Corporation 1999-2012
。保留所有权利。
B.2.11 枚举 .................................................................................................................................................. 490
B.2.12 委托 .................................................................................................................................................. 491
B.2.13 特性 .................................................................................................................................................. 491
B.3 不安全代码的语法扩展 .......................................................................................................................... 492
C. 参考资料 ........................................................................................................................................................ 497
章节 错误!使用“开始”选项卡将 Heading 1 应用于要在此处显示的文字。 错误!使用“开始”选项卡将 Heading 1 应用于要在此处显示的文字。
版权所有
Microsoft Corporation 1999-2012
。保留所有权利。
1
1. 介绍
C#(读作“See Sharp”)是一种简洁、现代、面向对象且类型安全的编程语言。C# 起源于 C 语言家族,
因此,对于 C、C++ 和 Java 程序员,可以很快熟悉这种新的语言。C# 已经分别由 ECMA International
和 ISO/IEC 组织接受并确立了标准,它们分别是 ECMA-334 标准和 ISO/IEC 23270 标准。Microsoft 用
于 .NET Framework 的 C# 编译器就是根据这两个标准实现的。
C# 是面向对象的语言,然而 C# 进一步提供了对面向组件 (component-oriented) 编程的支持。现代软件
设计日益依赖于自包含和自描述功能包形式的软件组件。这种组件的关键在于,它们通过属性、方法和
事件来提供编程模型;它们具有提供了关于组件的声明性信息的特性;同时,它们还编入了自己的文档。
C# 提供的语言构造直接支持这些概念,这使得 C# 语言自然而然成为创建和使用软件组件之选。
有助于构造健壮、持久的应用程序的若干 C# 特性:垃圾回收 (Garbage collection) 将自动回收不再使用
的对象所占用的内存;异常处理 (exception handling) 提供了结构化和可扩展的错误检测和恢复方法;类
型安全 (type-safe) 的语言设计则避免了读取未初始化的变量、数组索引超出边界或执行未经检查的类型
强制转换等情形。
C# 具有一个同一类型系统 (unified type system)。所有 C# 类型(包括诸如 int 和 double 之类的基元类
型)都继承于单个根类型:object。因此,所有类型都共享一组通用操作,并且任何类型的值都能够
以一致的方式进行存储、传递和操作。此外,C# 同时支持用户定义的引用类型和值类型,既允许对象
的动态分配,也允许轻量结构的内联存储。
为了确保 C# 程序和库能够以兼容的方式逐步演进,C# 的设计中充分强调了版本控制 (versioning)。许
多编程语言不太重视这一点,导致采用那些语言编写的程序常常因为其所依赖的库的更新而无法正常工
作。C# 的设计在某些方面直接考虑到版本控制的需要,其中包括单独使用的 virtual 和 override 修
饰符、方法重载决策规则以及对显式接口成员声明的支持。
本章的其余部分将描述 C# 语言的基本特征。尽管后面的章节会更为详尽,有时甚至逻辑缜密地对规则
和例外情况进行描述,但本章的描述力求简洁明了,因而难免会牺牲完整性。这样做是为了向读者提供
关于该语言的概貌,一方面使读者能尽快上手编写程序,另一方面为阅读后续章节提供指导。
1.1 Hello world
按照约定俗成的惯例,我们先从“Hello, World”程序着手介绍这一编程语言。下面是它的 C# 程序:
using System;
class Hello
{
static void Main() {
Console.WriteLine("Hello, World");
}
}
C# 源文件的扩展名通常是 .cs。假定“Hello, World”程序存储在文件 hello.cs 中,可以使用下面的
命令行调用 Microsoft C# 编译器编译这个程序:
csc hello.cs
编译后将生成一个名为 hello.exe 的可执行程序集。当此应用程序运行时,输出结果如下:
C# LANGUAGE SPECIFICATION
2
版权所有
Microsoft Corporation 1999-2012
。保留所有权利。
Hello, World
“Hello, World”程序的开头是一个 using 指令,它引用了 System 命名空间。命名空间提供了一种分
层的方式来组织 C# 程序和库。命名空间中包含有类型及其他命名空间 — 例如,System 命名空间包含
若干类型(如此程序中引用的 Console 类)以及若干其他命名空间(如 IO 和 Collections)。如果
使用 using 指令引用了某一给定命名空间,就可以通过非限定方式使用作为该命名空间成员的类型。
正是由于使用了 using 指令,该程序才可以采用 Console.WriteLine 这一简化形式代替
System.Console.WriteLine。
“Hello, World”程序中声明的 Hello 类只有一个成员,即名为 Main 的方法。Main 方法是使用
static 修饰符声明的。实例方法可以使用关键字 this 来引用特定的封闭对象实例,而静态方法的操
作不需要引用特定对象。按照惯例,名为 Main 的静态方法将作为程序的入口点。
该程序的输出由 System 命名空间中的 Console 类的 WriteLine 方法产生。此类由 .NET Framework 类
库提供,默认情况下,Microsoft C# 编译器自动引用该类库。注意,C# 语言本身没有单独的运行库。事
实上,.NET Framework 就是 C# 运行库。
1.2 程序结构
C# 中的组织结构的关键概念是程序 (program)、命名空间 (namespace)、类型 (type)、成员 (member) 和程
序集 (assembly)。C# 程序由一个或多个源文件组成。程序中声明类型,类型包含成员,并且可按命名空
间进行组织。类和接口就是类型的示例。字段 (field)、方法、属性和事件是成员的示例。在编译 C# 程
序时,它们被物理地打包为程序集。程序集通常具有文件扩展名 .exe 或 .dll,具体取决于它们是实现
应用程序 (application) 还是实现库 (library)。
下面的示例
using System;
namespace Acme.Collections
{
public class Stack
{
Entry top;
public void Push(object data) {
top = new Entry(top, data);
}
public object Pop() {
if (top == null) throw new InvalidOperationException();
object result = top.data;
top = top.next;
return result;
}
class Entry
{
public Entry next;
public object data;
public Entry(Entry next, object data) {
this.next = next;
this.data = data;
}
}
}
}
剩余514页未读,继续阅读
2018-07-23 上传
2021-07-01 上传
2022-11-16 上传
点击了解资源详情
2018-04-19 上传
点击了解资源详情
点击了解资源详情
龍过鸡年
- 粉丝: 112
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Java毕业设计项目:校园二手交易网站开发指南
- Blaseball Plus插件开发与构建教程
- Deno Express:模仿Node.js Express的Deno Web服务器解决方案
- coc-snippets: 强化coc.nvim代码片段体验
- Java面向对象编程语言特性解析与学生信息管理系统开发
- 掌握Java实现硬盘链接技术:LinkDisks深度解析
- 基于Springboot和Vue的Java网盘系统开发
- jMonkeyEngine3 SDK:Netbeans集成的3D应用开发利器
- Python家庭作业指南与实践技巧
- Java企业级Web项目实践指南
- Eureka注册中心与Go客户端使用指南
- TsinghuaNet客户端:跨平台校园网联网解决方案
- 掌握lazycsv:C++中高效解析CSV文件的单头库
- FSDAF遥感影像时空融合python实现教程
- Envato Markets分析工具扩展:监控销售与评论
- Kotlin实现NumPy绑定:提升数组数据处理性能
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功