为什么某些Silverlight对象不能为Nullable <>类型?

Gon*_*ing 2 c# nullable

显然你不能在Silverlight中拥有Nullable <Rectangle>.我想知道为什么没有技术原因以及可能适用的对象数量?

今天我在说明"矩形"类型不是Nullable类型之后偶然发起了一个小小的评论.那就是你不能有" Nullable <Rectangle> "或" Rectangle? "

我的错误是仅在Silverlight中测试它并假设Silverlight System.Windows.Shapes.Rectangle的行为转移到.Net中的System.Drawing.Rectangle类型.对我感到羞耻.我已经删除了我的评论,因为他们没有为Stack Overflow添加任何值.

如果有人能够完全回答这个问题,我将不胜感激.

Qua*_*ter 9

Nullable<T>只能与值类型或结构一起使用,System.Windows.Shapes.Rectangle是引用类型或类.您不需要使用Nullable<T>,因为您已经可以为System.Windows.Shapes.Rectangle类型的变量分配空引用:

System.Windows.Shapes.Rectangle rect = null;
Run Code Online (Sandbox Code Playgroud)

相比之下,System.Drawing.Rectangle是一个值类型,因此它的值不能为null.默认值是全零的矩形.

System.Drawing.Rectangle rect = null; // Does not compile
System.Drawing.Rectangle rect = 
    default(System.Drawing.Rectangle); // All fields are zero
Run Code Online (Sandbox Code Playgroud)