C#9顶级程序和目标类型表达式

2021-04-01 19:38:46

.NET 5(11月2020年11月发布)包括对C#9的支持,是C#编程语言的主要新版本。这一系列文章探讨了.NET的主要编程语言中的新功能。在第一篇文章中,我们将查看顶级语句和目标类型的新和条件表达式。这些功能使C#减去冗长,可以在日常节目中使用。

在我们开始之前:去年,我们发布了一个关于C#8的系列。您可以在此处找到文章:

顶级程序允许您编写应用程序的主要方法,而无需添加具有静态主要方法的类。例如:

//使用指令 使用静态系统.Console; 使用system.threading.tasks; //计划陈述 等待任务.Delay(100); 写道("你好" +(args.length> 0?args [0]:"世界!")); 返回0; //本地功能 //类/命名空间声明 void foo(){} 班级foo {}

程序语句直接在C#文件中添加,而无需括号方法,类或命名空间。您可以在程序陈述之前使用指令。可选地,在语句之后,您可以定义本地函数,类型和命名空间。

该示例还显示了顶级编程的一些有趣功能。该程序可以是异步:我们可以使用await关键字。使用args参数可用程序参数,程序可以返回退出代码。

由于C#3,我们可以使用var关键字省略变量的声明类型。编译器从表达式中派生类型:

使用C#9,您还可以省略新操作员的类型,并使编译器从声明类型中派生类型:

人p1 = new(); 人p2 =新(" tom"); pers p3 = new(){firstname ="汤姆" };

此语法的好处是类型声明在左侧齐全。正如您可以在该示例中看到的,您可以通过构造函数参数并使用对象indeSizerser。

当您将参数传递给方法时,目标类型的新表达式也会起作用。但是,它不太清楚构建的类型:

用C#9,分支? ..:允许表达式有不同的类型,只要它们都转换为目标类型:

此示例在C#9中工作,即使按钮和表单是不同类型的,因为两者都转换为目标类型(控制)。以前,具有完全相同类型所需的分支,当它们不匹配时需要引入投射。

在本文中,我们研究了顶级程序,这使得撰写的主要方法不那么详细。我们还涵盖了目标类型的新表达式,它提供了一个很好的语法,用于对齐变量声明类型,而无需复制新操作员的类型。最后,我们看到了目标类型的条件表达式如何允许我们在两个分支转换为目标类型时省略投射。

您可以使用C#9使用.NET 5 SDK,可在Red Hat Enterprise Linux,Red Hat OpenShift,Fedora,Windows,MacOS和其他Linux发行版上使用。