没有合适的资源?快使用搜索试试~ 我知道了~
首页C# 5.0语言规范完整目录版:从HelloWorld到高级特性
C# 5.0语言规范完整目录版:从HelloWorld到高级特性
需积分: 14 30 下载量 56 浏览量
更新于2024-07-20
1
收藏 2.51MB PDF 举报
C#语言规范5.0中文版是一个由微软官方发布的文档,针对C#编程语言提供了详细的规则和指导。这份规范覆盖了C#语言的核心概念,包括但不限于程序结构、类型和变量、表达式、语句、类和对象、语言的构成部分如成员、可访问性、类型参数、基类、字段、方法(包括参数、方法体、局部变量、静态与实例方法、虚方法、重写方法、抽象方法、方法重载以及构造函数、属性、索引器、事件、运算符、析构函数等)、结构体、数组、接口、枚举、委托和特性。
该版本的规范特别强调了词法结构,如程序和文法的表示形式,以及注释、空白处理和字符转义序列。在2.4节中,对C#的标识符规则进行了详尽的阐述,这对于编写符合语言标准的代码至关重要。
此外,文档还提醒读者,所有内容受Microsoft Corporation的版权保护,版权所有时间为1999年至2012年,并要求用户在发现错误或提供反馈时通过csharp@microsoft.com联系。由于原版文档为Word格式且缺少目录,提供者将其转换成PDF并添加了完整的目录,以便于读者查找和学习。
这份规范对于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
章节 错误!未定义样式。 错误!未定义样式。
版权所有
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页未读,继续阅读
2011-01-21 上传
2016-06-16 上传
2014-04-14 上传
2021-07-01 上传
2020-04-24 上传
点击了解资源详情
2022-11-16 上传
ywbhnay
- 粉丝: 53
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Python和Opencv的车牌识别系统实现
- 我的代码小部件库:统计、MySQL操作与树结构功能
- React初学者入门指南:快速构建并部署你的第一个应用
- Oddish:夜潜CSGO皮肤,智能爬虫技术解析
- 利用REST HaProxy实现haproxy.cfg配置的HTTP接口化
- LeetCode用例构造实践:CMake和GoogleTest的应用
- 快速搭建vulhub靶场:简化docker-compose与vulhub-master下载
- 天秤座术语表:glossariolibras项目安装与使用指南
- 从Vercel到Firebase的全栈Amazon克隆项目指南
- ANU PK大楼Studio 1的3D声效和Ambisonic技术体验
- C#实现的鼠标事件功能演示
- 掌握DP-10:LeetCode超级掉蛋与爆破气球
- C与SDL开发的游戏如何编译至WebAssembly平台
- CastorDOC开源应用程序:文档管理功能与Alfresco集成
- LeetCode用例构造与计算机科学基础:数据结构与设计模式
- 通过travis-nightly-builder实现自动化API与Rake任务构建
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功