请问Microsoft.AspNetCore.WebApplication中new(new() { Args = args })语法含义?
WebApplication类中CreateBuilder方法的语法解析
语法细节拆解
这两段代码用到了C#的简化语法,具体说明如下:
1. 无参CreateBuilder方法
public static WebApplicationBuilder CreateBuilder() => new(new());
=>是表达式体成员语法,替代了传统的{ return ...; }写法,让静态方法的定义更简洁,意思就是这个方法直接返回后面表达式的结果。new(new())是嵌套实例化:外层new()创建WebApplicationBuilder对象,内层new()是创建它构造器所需的WebApplicationOptions参数实例(WebApplicationBuilder的构造器要求传入WebApplicationOptions类型参数),这里用无参构造生成默认配置的选项对象。
2. 带命令行参数的CreateBuilder方法
public static WebApplicationBuilder CreateBuilder(string[] args) => new(new() { Args = args });
- 同样用表达式体语法直接返回
WebApplicationBuilder实例。 new() { Args = args }是对象初始化器语法:先通过无参构造创建WebApplicationOptions实例,紧接着给它的Args属性赋值为传入的命令行参数数组,省去了先实例化再单独赋值的步骤,写法更紧凑。
实际作用
这两个静态方法是ASP.NET Core提供的快捷入口,用来生成预配置好的WebApplicationBuilder实例——这个实例是构建Web应用的核心,负责配置服务、中间件、主机环境等。无参版本使用默认配置启动,带参数版本则把外部传入的命令行参数整合到应用配置里。
内容的提问来源于stack exchange,提问作者Isaac Tack
相关产品推荐
相关产品推荐

