更快,更强的.NET 7 发布了

.NET Conf 2022 在昨晚(11月8日) 11 点 正式开始了,为期三天的会议(11月8-10日), 围绕 .NET 7 展开。 相信各位小伙伴都已经开始安装 .NET 7 正式版本还有以及相关的开发工具。这次 .NET 7 围绕传统的 C# , ASP.NET Core , Blazor , .NET MAUI , 云原生等内容进行了更新。下面归类总结一下我比较关心的更新内容,希望能给各位小伙伴一个快速的介绍。

C# 11 新增的六大功能

1. 泛型属性 - Generic attributes

泛型是编程语言的一种风格。让程序员在强类型程序设计语言中编写代码使用一些以后才指定的类型。C# 在 2.0 开始支持泛型,C# 版本更替时不断对泛型的支持进行了增强和补充。在 C# 11 中,增加了泛型属性。

这是一段 ASP.NET 的代码,每个字段都有一些要求属性,如必填的字段,限制范围,以及对应的类型等

public class Movie
{
    public int Id { get; set; }

    [Required]
    [StringLength(100)]
    public string Title { get; set; } = null!;

    [ClassicMovie(1960)]
    [DataType(DataType.Date)]
    [Display(Name = "Release Date")]
    public DateTime ReleaseDate { get; set; }

    [Required]
    [StringLength(1000)]
    public string Description { get; set; } = null!;

    [Range(0, 999.99)]
    public decimal Price { get; set; }

    public Genre Genre { get; set; }

    public bool Preorder { get; set; }
}

你可以通过 System.Attribute 派生出不同的属性。

在 C# 11 之前你也可以去做泛型属性的定义,通过 System.Type 在自定义属性类中作为构造函数的参数进行传递

[AttributeUsage(AttributeTargets.Class)]
public class Conditions: Attribute
{
    public Conditions(Type t)
    {
        ParamType = t;
    }

    public Type ParamType { get; }
}

实现

[Conditions(typeof(string))]
public class Player
{
    public string Number { get; set; }

    public string Name { get; set; }
}

而 C# 11 增加了对泛型属性的支持。 直接定义一个泛型类,不用再将 System.Type 作为参数传递给构造函数。 而且可以有一个或者多个类型作为参数, 而且类型安全性也增加了

[AttributeUsage(AttributeTargets.Class)]
public class Conditions<T>: Attribute
    where T : class
{
    public Conditions()
    {
    }

    public T ParamType { get; }
}


[Conditions<string>()]
public class Player
{
    public string Number { get; set; }

    public string Name { get; set; }
}

因为有了泛型类的加持,您可以在类型参数上灵活添加不同的条件约束。

2. 原始字符串 - New Raw string literals

在定义字符串时,我们往往夹杂着很多的符号,换行还有空格,但过往这些都需要增加转移字符,但现在通过原始字符串可以让字符串定义更为简单,也更容易给人接受

string longMessage = """
    This is a long message.
    It has several lines.
        Some are indented
          
  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值