gpt4 book ai didi

c# - 为什么我不能写 Nullable>?

转载 作者:可可西里 更新时间:2023-11-01 08:36:10 26 4
gpt4 key购买 nike

Nullable<T> 的定义是:

[SerializableAttribute]
public struct Nullable<T> where T : struct, new()

约束where T : struct暗示 T只能是值类型。所以我很清楚我不能写:

Nullable<string> a; //error. makes sense to me

因为 string是引用类型,不是值类型。但是我真的不明白为什么我不能写

Nullable<Nullable<int>> b; //error. but why?

为什么不允许?毕竟,Nullable<int>是一个值类型,因此,它可以是 Nullablle<T> 的类型参数.

当我在 ideone 上编译它时,它给出了这个错误(ideone):

error CS0453: The type 'int?' must be a non-nullable value type in order to use it as type parameter 'T' in the generic type or method 'System.Nullable' Compilation failed: 1 error(s), 0 warnings

最佳答案

因为它在 C# 规范中(第 4.4.4 节):

If the constraint is the value type constraint (struct), the type A must satisfy one of the following:

  • A is a struct type or enum type, but not a nullable type. Note that System.ValueType and System.Enum are reference types that do not satisfy this constraint.
  • A is a type parameter having the value type constraint (§10.1.5).

关于c# - 为什么我不能写 Nullable<Nullable<int>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7597218/

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