.NET 6新特性试用 | 总结:我最喜欢的5个特性

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET 6新特性试用 | 总结:我最喜欢的5个特性相关的知识,希望对你有一定的参考价值。

前言

不知不觉,《.NET 6新特性试用》系列文章已经写了20多篇,而今天终于要告一段落了。

如果你还没有看过,详细文章列表在这里:

在这么多特性中,我最喜欢如下5个特性:

1、最小Web API

仅需三行代码,就可以生成一个完整功能的Web API:

var app = WebApplication.Create(args);

app.MapGet("/", () => "hello My IO!");

app.Run();

虽然这看起来非常简陋,但是必须看到这个特性的真正价值——对于新人来说,更容易入门和理解。

与其在开始时就使事情变得复杂,不如先简化事情再稍后增加复杂性。

2、热重载

修改代码后无需重新编译,就可以将代码更改立即应用于正在运行的应用程序上。

通过减少等待应用重新生成、重启、重新导航到你在应用中的上一个位置等操作的时间来提高工作效率。

3、隐式using指令

再也不用在cs文件中写大量using指令了,只需修改项目文件,即可增加我们的global using:

<ItemGroup>
    <Using Include="GlobalUsingDemo" />
</ItemGroup>

这可以大大减少模板文件的代码,使你的代码更加紧凑。

4、扩展属性模式

可以使用.引用对象属性的嵌套成员,进行模式匹配:

if(obj is Employee  Manager.Name:"lisi", Manager.Manager.Position: "CEO"  employee)

这可以使模式匹配表达式更易于阅读,特别是对于嵌套较深的类型。

拥有的嵌套越多,此功能就越强大。

5、System.Text.Json序列化代码自动生成

只需简单的几行代码:

[JsonSerializable(typeof(WeatherForecast))]
internal partial class WeatherForecastContext : JsonSerializerContext

就可以在编译时自动生成序列化代码,提升性能:

private static void WeatherForecastSerializeHandler(global::System.Text.Json.Utf8JsonWriter writer, global::WebApplication1.WeatherForecast? value)

    if (value == null)
    
        writer.WriteNullValue();
        return;
    

    writer.WriteStartObject();
    writer.WriteNumber(PropName_TemperatureC, value.TemperatureC);
    writer.WriteNumber(PropName_TemperatureF, value.TemperatureF);
    writer.WriteString(PropName_Summary, value.Summary);

    writer.WriteEndObject();

以前都是我们自己用Source Generator开发功能,现在终于微软自己也用上了。

结论

当然,.NET 6新特性远远不止于此,只是限于作者精力和能力有限,没有在这个系列中全部体现出来。

如果大家有任何想法和建议,欢迎到公众号“My IO”后台留言与我交流!

以上是关于.NET 6新特性试用 | 总结:我最喜欢的5个特性的主要内容,如果未能解决你的问题,请参考以下文章

我最喜欢的Mybatis 3.5新特性!超实用!

.NET 6新特性试用 可写JSON DOM API

.NET 6新特性试用 | 可空引用类型

.NET 6新特性试用 | TryGetNonEnumeratedCount

.NET 6新特性试用 | PriorityQueue

.NET 6新特性试用 | 异步流