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

其他类别

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

Tim Corey
9m 03s

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

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

起点:基本命名空间指令

[0:35 - 1:35] 设置开始时关闭隐式使用,使每个指令在代码中清晰可见。 在顶部没有任何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。 这种形式在.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 小时在线。
聊天
电子邮件
打电话给我