gpt4 book ai didi

c# - 不可空类型的通用约束

转载 作者:可可西里 更新时间:2023-11-01 08:37:39 25 4
gpt4 key购买 nike

我有以下类(class):

public class KeyDTO<T>
{
public T Id { get; set; }
}

到目前为止一切顺利,但我希望类型参数 T 是不可为 null 的类型。我在某处读到这可能是可行的:

public class KeyDTO<T> where T : IComparable, IComparable<T>
{
public T Id { get; set; }
}

但是,如果我改变 public T Idpublic T? Id ,我得到一个编译错误,告诉我 T必须是不可空的。

如何指定泛型类型参数必须是不可空的?

编辑

我想完成这个因为我想注释我的 Id属性(property)与[Required]属性如下:

public class KeyDTO<T> {
[Required]
public T Id { get; set; }
}

什么 [Required]确实是验证模型所以 T不能为空。

但是,如果我有 KeyDTO<int> , Id将被初始化为 0 , 绕过我的 [Required]属性

最佳答案

从 C# 8.0 开始,您现在可以使用 where T : notnull 泛型约束来指定 T 是不可为 null 的类型。

关于c# - 不可空类型的通用约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27489229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com