Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

When you create a new application with the latest version of .NET, Program.cs looks as follows:

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();

If you're wondering - this is literally the entire file. No public class Program; no includes; no constructors. Back in "the day" this all used to be included within a Main function of a class called Program, like so:

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>());
}

So why the change to this scripting style format with no class definition for Program.cs?

like image 358
8protons Avatar asked Mar 13 '26 07:03

8protons


1 Answers

This syntax was released new with .NET 6 and C# 9. The syntax is referred to as top-level statements and aims to enable you to start coding quickly, excluding the need to include repetitive, 'ceremonial' code. It's not very useful; this feature only simplifies what's needed to start coding.

Docs with more details: https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/tutorials/top-level-statements

like image 123
Augusto Ferbonink Avatar answered Mar 14 '26 20:03

Augusto Ferbonink



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!