This question already has answers here:
Why can't I write Nullable<Nullable<int>>?
(5个答案)
5年前关闭。
对不起,如果这是一个愚蠢的问题,我试图更好地理解.Net中的Nullable类型。
从我从Microsoft源代码(使用ReSharper)获得的信息中,我了解到Nullable是一个结构,而T必须是一个结构
现在,我试图做这样的事情
而且在编译时出现错误:
对于上面提到的代码,我得到一个错误“ System.Nullable只能包含不可为null的值类型”,但是在Nullable类型中如何实现呢?
而对于
我收到错误消息“类型System.Nullable必须是不可为空的值类型,才能将其用作参数T”。
我现在有点困惑,有人可以帮助我了解发生了什么还是我不了解某些内容?
非常感谢。
编辑:
如果结构是值类型,并且值类型不能为null,那么Nullable如何成为结构?
贷方:支出者
(5个答案)
5年前关闭。
对不起,如果这是一个愚蠢的问题,我试图更好地理解.Net中的Nullable类型。
从我从Microsoft源代码(使用ReSharper)获得的信息中,我了解到Nullable是一个结构,而T必须是一个结构
public struct Nullable<T> where T : struct
现在,我试图做这样的事情
public struct CustomNullable<T> where T : struct
{
}
public class CustomNullableClass<T> where T : struct
{
}
而且在编译时出现错误:
Nullable<int?> a = null;
Nullable<Nullable<int>> a1 = null;
对于上面提到的代码,我得到一个错误“ System.Nullable只能包含不可为null的值类型”,但是在Nullable类型中如何实现呢?
而对于
CustomNullable<int?> a2 = null;
CustomNullableClass<int?> a3 = null;
我收到错误消息“类型System.Nullable必须是不可为空的值类型,才能将其用作参数T”。
我现在有点困惑,有人可以帮助我了解发生了什么还是我不了解某些内容?
非常感谢。
编辑:
如果结构是值类型,并且值类型不能为null,那么Nullable如何成为结构?
贷方:支出者
最佳答案
实际上,这是C#编译器(猜测)中的内部漏洞。您不能在自己的类中复制它。如果使用完全相同的IL进行自己的类型输入,则不会强制执行该附加的隐藏约束。
关于c# - Nullable <int?>是不可能的,为什么不能呢? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24612399/