跳至页脚内容
Iron Academy Logo
学习 C#
学习 C#

其他类别

C# 在.NET 8中的使用指令和类型别名

[[academy-video-youtube({"vid": "GiVZzrL2EIM", "start_time": "0", "title": ".NET 8 中的使用指令和类型别名", "creator": "Tim Corey", "length": "9m 03s"})]]

C# 的 using 关键字功能多样,其基本形式与新的功能之间的差距比大多数开发者意识到的大。命名空间快捷方式自始至今一直存在,静态类导入在 .NET 6 中出现,而 .NET 8 扩展了别名语法,涵盖任何类型,包括元组。 了解所有三种形式可让您将重复的类型声明减少为文件顶部的一个可读名称。

本指南在一个 .NET 8 控制台应用程序中探索 using 指令 的每种形式,基于 Tim Corey 对最新功能的讲解。 我们将从熟悉的命名空间快捷方式构建到新的类型别名语法。

起点:基本命名空间指令

[0:35 - 1:35] 设置开始时关闭隐式使用,使每个指令在代码中清晰可见。 在开头没有任何 using 声明的情况下,调用 Console.WriteLine 需要使用全限定名称:System.Console.WriteLine。 添加一个指令解决了这一问题:

using System;
using System;

这行代码使 System 内的每种类型都可以通过其短名称使用。 该指令不是库意义上的导入; 没有新的代码被拉入。 它是一个命名空间快捷方式,当编译器遇到未限定的类型名称时,告诉编译器在哪里查找。

使用静态跳过类名

[2:19 - 2:45] using static 形式针对特定的静态类,而不是命名空间。 指向 System.Console 使该类的每个静态成员在没有类前缀的情况下可用:

using static System.Console;

WriteLine("Hello, world!");
using static System.Console;

WriteLine("Hello, world!");

您可以直接调用 WriteLine,而不是 Console.WriteLine。 这种形式在.NET 6中到来,当文件多次调用相同的静态类时最有用。 消除重复的类名称减少了每个调用点的视觉干扰。

类型别名:命名任何类型

[3:41 - 6:40] .NET 8 扩展了别名语法,以便 using 可以为任何类型指定一个短名称。 一个有动机的案例是命名元组。 当一个方法需要返回多个相关值而不需要完整的类定义时,元组是常见的返回类型,但在一个文件中多次声明相同的元组类型会产生很多重复:

// Without an alias, each declaration repeats the full tuple type
(string FirstName, string LastName) GetUser() { ... }
(string FirstName, string LastName) person = GetUser();
// Without an alias, each declaration repeats the full tuple type
(string FirstName, string LastName) GetUser() { ... }
(string FirstName, string LastName) person = GetUser();

一个类型别名将在顶部合并为单个声明:

using Person = (string FirstName, string LastName);
using Person = (string FirstName, string LastName);

从那时起 Person 在文件中代表完整的元组定义:

Person GetUser() { ... }
Person person = GetUser();
Person GetUser() { ... }
Person person = GetUser();

别名只在声明的文件中存在。 它不会在应用程序中传播。 请注意,如果您需要项目范围内可用的类型,记录或类是合适的选择。

别名与记录或类

[5:32 - 6:23] 一个常见问题是:如果 Person 看起来像一个记录,为什么不直接声明一个? 答案归结于范围和重量。 记录或类是一个命名类型,它存在于整个项目中,携带自己的文件,并需要在代码库演变时进行维护。 元组别名是一个文件本地的便利。 当您在一个类文件中两次或三次使用一个二字段的元组时,创建一个完整的类型定义增加了维护开销,而别名则避免了。 .NET团队的意图是提供不同选项的渐变,而不是在原始元组和完整类之间强迫二元选择。

结论

三种 using 形式满足不同的需求。 基本的命名空间指令在整个文件中缩短了限定类型名,而 using static 从静态成员调用中移除类前缀。 .NET 8类型别名为任何类型,包括元组,分配了一个可读名称,作用域为单个文件。每种形式减少了重复,而不会改变代码的基础行为。

在Tim Corey的YouTube完整视频中观看实际演示这三种形式在一个工作的.NET 8项目中的使用。

Hero Worlddot related to C# 在.NET 8中的使用指令和类型别名
Hero Affiliate related to C# 在.NET 8中的使用指令和类型别名

分享您的所爱,赚取更多收入

您为使用 .NET、C#、Java、Python 或 Node.js 的开发人员创建内容吗?将您的专业知识转化为额外收入!

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我