CodeSnippet.Cn
代码片段
Csharp
架构设计
.NetCore
西班牙语
kubernetes
MySql
Redis
Algorithm
Other
Ubuntu
Linux
.NetMvc
VisualStudio
Python
Git
pm
WPF
java
Plug-In
分布式
CSS
微服务架构
JavaScript
DataStructure
Shared
C# 10 的新功特性实早就应该发布了
0
.NetCore
Csharp
小笨蛋
发布于:2021年06月30日
更新于:2021年06月30日
193
#custom-toc-container
### C# 10 New Features 在即将到来的 C# 10 中增加的两个新特性其实早就应该发布啦。它们分别是: - global using - lamdba 优化 通过 `global using` 这个 feature 我们可以实现命令空间的统一管理这样就可以避免写很多 `namespace` 的引用了,我们可以把常用的 `namespace` 放在一个文件中管理,类似于 MVC 中的 `_ViewImports.cshtml` 和 `Razor Page` 中的 `_Imports`,这样就可以简化上面的 `using` 了,之前看介绍说是,ASP.NET Core 6 会把 ASP.NET Core 相关的常用的命令空间通过 `global using` 的方式默认引用,这样上面的示例中就不需要再引用命名空间了。 另外一个 feature 则是对于 `lambda` 表达式的优化,可以自动进行类型推断来隐式的转换成委托,就可以简化上面强制类型转换成 `Func` 了,就可以自动的隐式转换了, 除此之外,我们还可以方便的在 `lamdba` 表达式上加 `Attribute` 注解,这有助于大大简化 API 书写的复杂度,具体看后面的示例吧 ### Sample-1 使用 C# 10 新特性之后的代码: ```csharp var app = WebApplication.Create(args); app.Map("/", () => "Hello World"); app.Run(); ``` 主要有两点变化,一个是 `Func` 的转换不再需要了,一个是命名空间的引用,会放在一个单独 Imports 文件中添加全局的命名空间引用 `Imports` 内容如下: ```csharp global using System; global using System.Collections.Generic; global using System.Linq; global using System.Threading.Tasks; global using Microsoft.AspNetCore.Builder; global using Microsoft.AspNetCore.Http; global using Microsoft.AspNetCore.Mvc; global using Microsoft.AspNetCore.Hosting; global using Microsoft.AspNetCore.Routing; global using Microsoft.Extensions.DependencyInjection; global using Microsoft.Extensions.Hosting; global using Microsoft.Extensions.Logging; global using Microsoft.Extensions.Configuration; ``` 上面提到了我们可以很方便在 `lamdba` 表达式上使用 `Attribute`,下面我们就来一个例子: ```csharp var app = WebApplication.Create(args); app.MapPost("/info", [HttpPost](IWebHostEnvironment env) => new { Time = DateTime.UtcNow, env.EnvironmentName }); app.Run(); ``` 除了 `Attribute`,我们还可以添加参数,参数可以自动从依赖注入服务中获取,如上面的 `IWebHostEnvironment` 期待!
这里⇓感觉得写点什么,要不显得有点空,但还没想好写什么...
返回顶部
About
京ICP备13038605号
© 代码片段 2025