如何在C#中使结构为Null

本文关键字:结构 Null | 更新日期: 2023-09-27 18:22:46

如何使C#中的结构为Null?

EMPLOYEE? objEmployee = null;  
EMPLOYEE stEmployee = objEmployee.GetValueOrDefault();

但这使stEmployee字段为null,但我想使这个结构为null。显示stEmployee.FirstName = nullstEmployee.LastName = null

但是我想使stEmployee为空。如何做到这一点?

如何在C#中使结构为Null

你不能。结构是C#中的值对象。如果要求它们可以为null,则需要使用语法EMPLOYEE?

结构是值类型,而不是引用类型。不能将所有值类型分配给null。

MSDN 上的"值类型"文章

struct不能为null,就像int不能为null和float不能为null一样——它们都是值类型!但就像你可以在C#中创建nullable类型一样,你可以面对struct:

当你想要一个能够接受空值的整数类型时,你应该遵循以下代码:

int? x = null;

然后你可以按照下面的方式检查它,你也可以通过x.value 访问它的值

if ( x != null)
{
    //then do blah-blah with x.Value
    Console.Write(x.Value * 2);
}

现在你可以对struct做同样的事情。。。

struct Book
{
   public string title;
   ...
}
...
Book book0 = null; //It doesn't work
Book? book1 = null; //It works

您需要使用Nullable<T>类型,该类型可从.NET2获得。

原因是引用类型的值可以设置为零,这将表明引用类型不指向任何东西,然后为NULL。对于值类型,不能简单地说它的值是全零,例如Int32的全零意味着只有0值。

主要区别在于,对于直接分配的值类型,对于引用类型,您只为该值分配一个"内存指针"。Nullable只能与值类型一起使用,无论类型是否为null(HasValue),它都会使用额外的位来存储信息。