gpt4 book ai didi

c# - 可空不是 ValueType

转载 作者:太空狗 更新时间:2023-10-29 18:02:48 27 4
gpt4 key购买 nike

如果您查看 .NET Nullable 的文档,您会看到:

   struct Nullable<T>

请注意,它是一个结构,而不是一个类。

好像是struct Nullable<T> 不是 ValueType,这是非常出乎意料的。以下代码打印 False:

   Type nullableType = typeof(Nullable<int>);
Console.WriteLine(nullableType is ValueType);

如果您查看生成的 IL,您会看到编译器确定了 nullableType在编译时成为 ValueType。但是如果它是一个结构,它怎么可能是一个 ValueType 呢?所有结构都是 ValueTypes,对吧?很明显,跟泛型有关系。

我在这里错过了什么?语言规范中有关于此的内容吗?

谢谢。

最佳答案

您正在测试 System.Type 是否为值类型。它不是。像这样重写:

Nullable<int> test = 42;
Console.WriteLine(test is ValueType);

关于c# - 可空不是 ValueType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6673890/

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