.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 来方便起见。

相关推荐
小年糕是糕手几秒前
【C/C++刷题集】顺序表、vector、链表、list核心精讲
c语言·开发语言·数据结构·c++·算法·leetcode·蓝桥杯
会编程的土豆2 分钟前
从 C/C++ 视角快速上手 Go 语言:核心差异与避坑指南
c语言·开发语言·c++·后端·golang
小白学大数据4 分钟前
Python 3.7 高并发爬虫:接口请求与页面解析并发处理
开发语言·爬虫·python
我命由我123455 分钟前
Kotlin 开发 - 双冒号操作符(引用顶层函数、引用成员函数、引用构造函数、引用属性、引用类)
android·java·开发语言·kotlin·android studio·android jetpack·android-studio
Jacky-0086 分钟前
Python pywin32 outlook邮箱
开发语言·python·outlook
minji...6 分钟前
Linux 线程同步与互斥(六) 线程安全与重入问题,死锁,线程done
linux·运维·开发语言·数据库·c++·算法·安全
伽蓝_游戏7 分钟前
UGUI源码剖析 (24):常用插件扩展介绍
ui·unity·c#·游戏引擎·游戏程序
2401_873479409 分钟前
遭遇DDoS攻击后如何快速分析攻击源?用IP查询+离线库定位异常IP
服务器·开发语言·tcp/ip·php
Gofarlic_oms18 小时前
利用API实现ANSYS许可证管理自动化集成
运维·服务器·开发语言·matlab·自动化·负载均衡
AI+程序员在路上9 小时前
VS Code 完全使用指南:下载、安装、核心功能与 内置AI 编程助手实战
开发语言·人工智能·windows·开源