C# Lambda表达式使用大括号与不使用的区别及代码疑问
ASP.NET Core中两种Lambda写法的区别与重复调用MapControllers的说明
两种Lambda写法的区别
- 不带大括号的写法
endpoint => endpoint.MapControllers()是C#的简化Lambda语法:当Lambda表达式的执行体只有一行语句时,可以省略包裹代码块的大括号{}。它和带大括号的版本功能完全一致,只是写法更简洁。 - 带大括号的写法
endpoints => { endpoints.MapControllers(); }是完整Lambda语法:用大括号明确包裹代码块,这种写法适合Lambda内部需要执行多行语句的场景。哪怕只有一行语句,写大括号也是合法的,但属于冗余写法。
简单说,这两种写法在功能上没有任何区别,只是语法形式不同。
为什么两次调用MapControllers?
这属于完全没必要的冗余代码:
UseEndpoints的作用是配置ASP.NET Core的终结点路由,MapControllers则是添加控制器对应的路由规则,让框架能识别并处理控制器的请求。- 只需要调用一次
MapControllers就足够完成配置,重复调用不会产生任何额外效果,也不会优化路由功能,反而属于无效代码,建议删掉其中一次调用。
内容的提问来源于stack exchange,提问作者manymanymore
相关产品推荐
相关产品推荐

