如何在C#中使结构为Null
本文关键字:结构 Null | 更新日期: 2023-09-27 18:22:46
如何使C#中的结构为Null?
EMPLOYEE? objEmployee = null;
EMPLOYEE stEmployee = objEmployee.GetValueOrDefault();
但这使stEmployee
字段为null,但我想使这个结构为null。显示stEmployee.FirstName = null
、stEmployee.LastName = null
但是我想使stEmployee
为空。如何做到这一点?
你不能。结构是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),它都会使用额外的位来存储信息。