创建可空类

时间:2012-03-07 21:56:37

标签: c#

如何在C#中创建可空(?)类?像:

public class Hello1 {
  public int Property1 { get; set; }
}

public class Hello2 {
 Public Hello1? Property2 { get; set; } //Hello1 should work when it has "?"
}

如果需要,我想让Hello1课程能够采用Hello1?格式。

7 个答案:

答案 0 :(得分:48)

您无需为引用类型创建可为空的类型。他们已经可以入罪了。你只需要为int,bool,decimal等值类型执行此操作...

答案 1 :(得分:10)

你不需要;引用类型可以是null。至于结构,只需附加? 即可。因此,只需删除?,然后照常使用null检查== null

答案 2 :(得分:3)

只需删除问号。默认情况下,所有类都可以为空。只需要将值类型对象(如struct)明确地设为可为空。

答案 3 :(得分:1)

所有类都可以为空。 nullable适用于不能为null的值类型

答案 4 :(得分:0)

Hello1已经可以为空了。您不需要在您的财产上使用?

编辑 - 我怀疑您可能正在尝试将Hello1.Property1设置为null,并且您希望将Hello1置为空可以允许这样做。它不会。如果你这样做,你需要将Property1标记为可为空。

答案 5 :(得分:0)

Hello1已经是参考类型,因此它已经是null  可以为空的语法" classname?"只能应用于ValueTypes,例如intDateTimefloat等,通常不能null

答案 6 :(得分:0)

请记住,C#或任何编程语言中有两种数据类型,即值类型(例如int,float,bool)和引用类型(所有用户定义的类和字符串数据类型)。

值类型会在创建后立即分配内存位置。所以它们必须保持一个值,而引用类型只有在使用new关键字明确创建时才能获取内存位置。

因此,只要它们不引用内存位置,默认情况下所有引用类型都可以为空。我们始终可以为其分配null

为了使值类型可以为空,我们通过在其旁边添加问号?来创建现有值类型的包装器。这样,值类型在C#中变为可为空。