繁体   English   中英

为什么 Program.cs 不再是 class?

[英]Why is Program.cs no longer a class?

当您使用最新的 .NET 框架创建新应用程序时,Program.cs 如下所示:

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();

如果您想知道 - 这就是整个文件。 没有public class Program 不包括; 没有构造函数。 回到“那天”,这一切都曾经包含在名为Program的 class 的Main function 中,如下所示:

public class Program
{
    public async static Task Main(string[] args)
    {
        var host = CreateHostBuilder(args).Build();

        ...

        await host.RunAsync();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder => 
                webBuilder.UseStartup<Startup>());
}

那么,为什么要更改这种没有 class Program.cs定义的脚本样式格式呢?

实际上,它不会发生在 .NET 框架中。 这种新语法与 .NET 6 和 C# 9 一起发布。它称为顶级语句,旨在使您能够快速开始编码,而无需包含重复的仪式代码。 它不是很有用,此功能仅简化了开始编码所需的内容。

包含更多详细信息的文档: https://learn.microsoft.com/en-us/do.net/csharp/whats-new/tutorials/top-level-statements

在 .net 6

[英]Calling class function from program.cs at runtimes in .net 6

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM