接着,我们使用的是 C# 9 语法:隐式主方法。主方法本应该声明一大堆的部分的,但在该特性之后可允许我们直接将执行代码一句一句写进文件,它们可以不属于任何一个命名空间以及类型。C# 9 约定,隐式主方法的默认包裹类型名就叫 Program,如果你需要拓展 Program 类型往里面加别的成员,可在隐式主方法的代码执行语句之后重新加上 Program 类型声明的头部,不过需要加 partial 关键字。因为主方法此时已经被我们拿出 Program 类型的声明部分了。
using System;
PrintFormatted(__arglist(10, "hello", 3.2));
file static partial class Program
{
private static void PrintFormatted(__arglist)
{
var args = new ArgIterator(__arglist);
for (int i = args.GetRemainingCount(); i > 0; i--)
{
var arg = TypedReference.ToObject(args.GetNextArg());
Console.WriteLine(arg);
}
}
}