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

标签 c# nullable

显然您不能在 Silverlight 中使用 Nullable。我想知道为什么不这样做的技术原因以及这可能适用于多少对象?

今天不小心启动了一个小comment flamewar在声明“Rectangle”类型不是 Nullable 类型之后。那就是你不能有“Nullable”或“Rectangle?

我的错误在于仅在 Silverlight 中对其进行测试,并假设 Silverlight System.Windows.Shapes.Rectangle 的行为会转移到 .Net 中的 System.Drawing.Rectangle 类型。我真丢人。我已经删除了我的评论,因为它们对 Stack Overflow 没有任何值(value)。

如果有人能完整地回答这个问题,我们将不胜感激。

最佳答案

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

System.Windows.Shapes.Rectangle rect = null;

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

System.Drawing.Rectangle rect = null; // Does not compile
System.Drawing.Rectangle rect = 
    default(System.Drawing.Rectangle); // All fields are zero

关于c# - 为什么某些 Silverlight 对象不能是 Nullable<> 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3595343/

相关文章:

c# - 在 C# winforms 中获得更好的文本渲染质量

c# - 将 `Nullable<T>` 作为类型参数传递给 C# 函数

c# - 委托(delegate)中变量的范围

C# - 如何测试一个实例是否是其类型的默认值

c# - zip 函数的用途是什么(如在 Python 或 C# 4.0 中)?

c# - 向用户显示已创建文件的最佳方式是什么?

c# - 如何在 Entity Framework 中具有映射到可为空的数据库列的值类型?

c# - 比较运算符如何与 null int 一起使用?

c# - .NET 6.0 中的 Null 行为

c# - 为什么以下条件运算符在包含 Nullable 类型的 StringBuilder 中运行异常?在 C# 中?