.NET 类库概述
.NET API 包括可加快和优化开发过程并提供对系统功能的访问的类、接口、委托和值类型。 为了便于语言之间进行交互操作,大多数 .NET 类型都符合 CLS,因而可在编译器符合公共语言规范 (CLS) 的任何编程语言中使用。
.NET 类型是生成 .NET 应用程序、组件和控件的基础。 .NET 包括的类型可执行下列功能:
- 表示基础数据类型和异常。
- 封装数据结构。
- 执行 I/O。
- 访问关于加载类型的信息。
- 调用 .NET 安全检查。
- 提供数据访问、多客户端 GUI 和服务器控制的客户端 GUI。
.NET 提供了一组丰富的接口以及抽象类和具体(非抽象)类。 可以按原样使用这些具体的类,或者在多数情况下从这些类派生你自己的类。 若要使用接口的功能,既可以创建实现接口的类,也可以从某个实现接口的 .NET 类中派生类。
命名约定
.NET 类型使用点语法命名方案,该方案隐含了层次结构的意思。 此技术将相关类型分为不同的命名空间组,以便可以更容易地搜索和引用它们。 全名的第一部分(最右边的点之前的内容)是命名空间名。 全名的最后一部分是类型名。 例如,System.Collections.Generic.List<T>
表示 List<T>
类型,属于 System.Collections.Generic
命名空间。 可使用 System.Collections.Generic 中的类型使用泛型集合。
此命名方案使扩展 .NET 的库开发人员可以轻松创建分层类型组,并用一致的、带有提示性的方式对其进行命名。 它还允许用全名(即命名空间和类型名称)明确地标识类型,这样可以防止类型名称发生冲突。 库开发人员在创建其命名空间的名称时应使用以下约定:
CompanyName.TechnologyName
例如,Microsoft.Word
命名空间就符合此原则。
利用命名模式将相关类型分组为命名空间是生成和记录类库的一种有用的方式。 但是,此命名方案对可见性、成员访问、继承、安全性或绑定无效。 一个命名空间可以被划分在多个程序集中,而单个程序集可以包含来自多个命名空间的类型。 程序集为公共语言运行时中的版本控制、部署、安全性、加载和可见性提供外形结构。
有关命名空间和类型名的更多信息,请参阅通用类型系统。
系统命名空间
System 命名空间是 .NET 中基本类型的根命名空间。 此命名空间包括表示由所有应用程序使用的基本数据类型的类,例如 Object(继承层次结构的根)、Byte、Char、Array、Int32 和 String。 在这些类型中,有许多与编程语言所使用的基元数据类型相对应。 当使用 .NET 类型编写代码时,可以在应使用 .NET 基础数据类型时使用编程语言的相应关键字。
下表列出了 .NET 提供的基类型,并对每种类型进行了简单描述,同时指出了 Visual Basic、C#、C++ 和 F# 中的相应类型。
类别 | 类名 | 描述 | Visual Basic 数据类型 | C# 数据类型 | C++/CLI 数据类型 | F# 数据类型 |
---|---|---|---|---|---|---|
整数 | Byte | 8 位无符号整数。 | Byte |
byte |
unsigned char |
byte |
SByte | 8 位有符号整数。 不符合 CLS。 |
SByte |
sbyte |
char 或 signed char |
sbyte |
|
Int16 | 16 位带符号整数。 | Short |
short |
short |
int16 |
|
Int32 | 32 位带符号整数。 | Integer |
int |
int 或 long |
int |
|
Int64 | 64 位带符号整数。 | Long |
long |
__int64 |
int64 |
|
UInt16 | 16 位无符号整数。 不符合 CLS。 |
UShort |
ushort |
unsigned short |
uint16 |
|
UInt32 | 32 位无符号整数。 不符合 CLS。 |
UInteger |
uint |
unsigned int 或 unsigned long |
uint32 |
|
UInt64 | 64 位无符号整数。 不符合 CLS。 |
ULong |
ulong |
unsigned __int64 |
uint64 |
|
浮点 | Half | 半精度(16 位)浮点数。 | ||||
Single | 单精度(32 位)浮点数字。 | Single |
float |
float |
float32 或 single |
|
Double | 双精度(64 位)浮点数字。 | Double |
double |
double |
float 或 double |
|
逻辑运算 | Boolean | 布尔值(真或假)。 | Boolean |
bool |
bool |
bool |
其他 | Char | Unicode(16 位)字符。 | Char |
char |
wchar_t |
char |
Decimal | 十进制(128 位)值。 | Decimal |
decimal |
Decimal |
decimal |
|
IntPtr | 大小取决于基础平台(32 位平台上为 32 位值,64 位平台上为 64 位值)的有符号整数。 | nint |
unativeint |
|||
UIntPtr | 大小取决于基础平台的无符号整数(32 位平台上为 32 位值,64 位平台上为 64 位值)。 不符合 CLS。 |
nuint |
unativeint |
|||
Object | 对象层次结构的根。 | Object |
object |
Object^ |
obj |
|
String | Unicode 字符的不变的定长串。 | String |
string |
String^ |
string |
除了基本数据类型外,System 命名空间还包含 100 多个类,范围从处理异常的类到处理核心运行时概念的类,如应用程序域和垃圾回收器。 System 命名空间还包含许多二级命名空间。
有关命名空间的详细信息,请使用 .NET API 浏览器来浏览 .NET 类库。 API 参考文档提供了有关每个名称空间及其类型和每个成员的文档。
数据结构
.NET 包含一组数据结构,这些结构是许多 .NET 应用的工作主力。 它们主要是集合,不过也包括其他类型。
- Array- 表示可通过索引访问的强类型对象的数组。 具有与构造相符的固定大小。
- List<T> - 表示可通过索引访问的对象的强类型列表。 可根据需要自动调整大小。
- Dictionary<TKey,TValue> -表示根据键编制索引的值的集合。 可以通过键访问值。 可根据需要自动调整大小。
- Uri - 提供统一资源标识符 (URI) 的对象表示形式和对 URI 各部分的轻松访问。
- DateTime - 表示时间上的一刻,通常以日期和当天的时间表示。
实用工具 API
.NET 包含一组可为许多重要任务提供功能的实用工具 API。
- HttpClient - 用于发送 HTTP 请求以及从 URI 所标识资源接收 HTTP 响应的 API。
- XDocument - 用于配合 LINQ 加载和查询 XML 文档的 API。
- StreamReader - 用于读取文件的 API。
- StreamWriter - 用于写入文件的 API。
应用模型 API
有许多应用模型可与 .NET 配合使用,例如:
- ASP.NET - 用于构建网站和服务的 Web 框架。 受 Windows、Linux 和 macOS 的支持(取决于 ASP.NET 版本)。
- .NET MAUI - 一个应用平台,用于生成使用 C# 在 Windows、macOS、iOS 和 Android 上运行的本机应用。
- Windows 桌面 - 包括 Windows Presentation Foundation (WPF) 和 Windows 窗体。