我正在尝试处理一个项目,我想要一个可以为空的属性。
NullableClass.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
public class NullableClass
{
public Guid ID { get; set; }
public string Name { get; set; }
public NullableClass()
{ }
public NullableClass(string Name)
{
this.Name = Name;
}
}
}
MainClass.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
public class MainClass
{
public Guid ID { get; set; }
public string Name { get; set; }
puplic int? Number { get; set; }
public NullableClass? NullableClass { get; set; }
public MainClass()
{ }
public MainClass(string Name)
{
this.Name = Name;
}
}
}
Visual Studio出现以下错误:
The type 'NullableClass' must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method 'Nullable<T>'
如何制作我的属性:NullableClass? NullableClass
当我谷歌时,他们不会说为什么不能这样做,但他们也没有说明如何做到这一点。
所以我的问题如下。 我可以创建可以为空的对象吗? 是? - &GT;怎么样? 没有? - &GT;为什么不呢?
答案 0 :(得分:1)
C#中的类默认为可空类型。因为它实际上是一个可以设置为null的指针。
C#中的另一个对象类型是Struct
,它不可为空,并且使用值而不是引用来处理。像int
和bool
这样的简单类型是结构。您可以将结构定义为类。
搜索Struct
的更多内容,您会看到。
在您的情况下,您可以:
public struct NullableStruct
{
public Guid ID { get; set; }
public string Name { get; set; }
}
它可以与NullableStruct?