创建一个可以为空的对象。可以吗?

时间:2017-04-08 10:35:15

标签: c#

我正在尝试处理一个项目,我想要一个可以为空的属性。

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;为什么不呢?

1 个答案:

答案 0 :(得分:1)

C#中的类默认为可空类型。因为它实际上是一个可以设置为null的指针。

C#中的另一个对象类型是Struct,它不可为空,并且使用值而不是引用来处理。像intbool这样的简单类型是结构。您可以将结构定义为类。

搜索Struct的更多内容,您会看到。

在您的情况下,您可以:

public struct NullableStruct
{
    public Guid ID { get; set; }
    public string Name { get; set; }
}

它可以与NullableStruct?

一起使用