.NET 10 & C# 14 New Features 新增功能介绍-扩展成员Extension Members

项目可以有任意数量的没有顶级语句的源代码文件。

  1. 没有其他入口

可以显式编写方法 Main ,但它不能用作入口点。 编译器将发出以下警告:

CS7022:程序的入口点是全局代码;忽略"Main()"入口点。

在具有顶级语句的项目中,不能使用 -main 编译器选项来选择入口点,即使该项目具有一个或多个 Main 方法。

  1. using引用

对于包含顶级语句的单个文件, using 指令必须首先出现在该文件中,如以下示例所示:

复制代码
using System.Text;

StringBuilder builder = new();
builder.AppendLine("The following arguments are passed:");

foreach (var arg in args)
{
    builder.AppendLine($"Argument={arg}");
}

Console.WriteLine(builder.ToString());

return 0;

同时,顶级语句隐式位于全局命名空间Global using中。

  1. 命名空间和类型定义

具有顶级语句的文件还可以包含命名空间和类型定义,但它们必须位于顶级语句之后。 例如:

复制代码
MyClass.TestMethod();
MyNamespace.MyClass.MyMethod();

public class MyClass
{
    public static void TestMethod()
    {
        Console.WriteLine("Hello World!");
    }
}

namespace MyNamespace
{
    class MyClass
    {
        public static void MyMethod()
        {
            Console.WriteLine("Hello World from MyNamespace.MyClass.MyMethod!");
        }
    }
}
  1. args入参

顶级语句可以引用 args 变量来访问输入的任何命令行参数。 args 变量永远不会为 null,但如果未提供任何命令行参数,则其 Length 将为零。 例如

复制代码
if (args.Length > 0)
{
    foreach (var arg in args)
    {
        Console.WriteLine($"Argument={arg}");
    }
}
else
{
    Console.WriteLine("No arguments");
}
  1. await异步调用

调用 await 来执行异步方法。 例如:

复制代码
Console.Write("Hello ");
await Task.Delay(5000);
Console.WriteLine("World!");
  1. 隐式入口方法

编译器会生成一个方法,作为具有顶级语句的项目的程序入口点。 方法的签名取决于顶级语句是包含 await 关键字还是 return 语句。

下表显示了方法签名的外观,使用表中的方法名称 Main 来方便起见。

相关推荐
小吴学不废Java8 分钟前
Python 基础语法
开发语言·python
布莱克60532 分钟前
队列详解:定义、分类、应用场景及与栈的区别(C/C++ 代码讲解)
c语言·开发语言·c++·队列
CPETW33 分钟前
USB TO I2C_(Excel)_Scan ---- 1000KHz总线速率测试_A
c语言·开发语言·网络·科技·单片机
2601_9622035138 分钟前
【SpringBoot3】面向切面 AspectJ AOP 使用详解
开发语言·前端·python
程序员大雄学编程40 分钟前
微积分43. 无穷积分入门:从概念到Python实战可视化
开发语言·python·学习·微积分
何以解忧,唯有..40 分钟前
LangChain 中 Pydantic 格式输出:结构化输出的完整指南
java·开发语言·langchain
郝学胜-神的一滴1 小时前
C++11 工程级应用 06:自己造一个类似Python的Range迭代器
开发语言·c++·windows·python·程序人生·microsoft
zh_xuan1 小时前
c++ jthread
开发语言·c++·jthread
旧梦95271 小时前
Java 捕获多个异常:从基础语法到最佳实践
java·开发语言
海兰2 小时前
【 Python 量化交易】开篇
开发语言·python·信息可视化·量化交易