【发布时间】:2011-08-09 11:42:10
【问题描述】:
听说C#2.0增加Nullable<T>类型需要稍微修改一下CLR(runtime),这个改动有必要吗?如果只添加一个新的Nullable<T> 泛型类,它是否可以实现相同的目标?
【问题讨论】:
-
装箱转换由 CLR 实现。 Nullable 有一个不寻常的装箱转换。因此需要在 CLR 中使用不寻常的代码。
-
@Hans:您知道 CLR 的任何其他领域——与 C# 编译器等相反——其中可空值是特殊情况的吗?我能想到的唯一另一个是
where T : struct通用约束。 -
@Luke - 有很多。最好的办法是在 SSCLI20 clr/src/vm 目录中搜索“可为空”。