design patterns are names for common algorithms. .net core uses several common design patterns, builder, dependency injection, which in turn is dependent on interface design, the model / view / controller pattern, etc.
none of this has anything to with main(). c# followed the practice of c in using a global module name main() as the standard entry point for a program. so the minimum hello world in c# was:
using System;
public class Program
{
public static void Main()
{
Console.WriteLine("Hello World");
}
}
following practices of other modern languages, c# 10 (released with .net 6), the main is optional. so now a hello world program is:
Console.WriteLine("Hello World");
making use of this feature, net 6 uses a minimal api. instead of the template creating a program file, and startup file, there is just the program file. as with previous version of .net core, the builder pattern is used for configuration, and defining services (DI) and the process loop.