.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和Int32String。 其中许多类型对应于编程语言使用的基元数据类型。 使用 .NET 类型编写代码时,当需要 .NET 基数据类型时,可以使用语言的相应关键字。
下表列出了 .NET 提供的基类型、简要描述每种类型,并指示 Visual Basic、C#、C++ 和 F# 中的相应类型。
类别 | 类名 | DESCRIPTION | 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 | 布尔值(true 或 false)。 | 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,这些 API 为许多重要任务提供功能。
- HttpClient - 用于从 URI 标识的资源发送 HTTP 请求和接收 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 窗体。