如何在C#中使结构为空?
EMPLOYEE? objEmployee = null;
EMPLOYEE stEmployee = objEmployee.GetValueOrDefault();
但这会使stEmployee
字段为null,但我想将此结构设为null。
它显示stEmployee.FirstName = null
,stEmployee.LastName = null
但我想让stEmployee
为空。
怎么实现呢?
答案 0 :(得分:2)
你做不到。结构是C#中的值对象。如果您要求它们可以为空,则需要使用语法EMPLOYEE?
答案 1 :(得分:1)
Struct是值类型 - 不是引用类型。无法将所有值类型分配为null。
答案 2 :(得分:1)
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
答案 3 :(得分:0)
您需要使用可从.NET2获得的Nullable<T>
类型。
原因是因为引用类型值可以设置为零,这表示引用类型不指向任何内容,然后是NULL。使用值类型,您不能简单地说它的值全为零,例如,Int32的全零值仅表示0值。
主要区别在于您直接指定值的值类型,对于参考类型,您只需为该值指定“内存指针”。 Nullable只能与值类型一起使用,并且它使用额外的位来存储信息,无论类型是否为null(HasValue)。