使非可空值类型可为空

Mal*_*ist 21 c# non-nullable .net-3.5

我有一个简单的结构,使用有限.结构是在调用数据库中的数据的方法中创建的.如果没有从数据库返回的数据我希望能够返回null,但是Visual Studio抱怨,无法将null转换为PackageName.StructName,因为它是一个不可为空的值类型.

我该如何让它可以为空?

And*_*are 24

您想要查看Nullable<T>值类型.


mqp*_*mqp 12

public struct Something
{
    //...
}

public static Something GetSomethingSomehow()
{
    Something? data = MaybeGetSomethingFrom(theDatabase);
    bool questionMarkMeansNullable = (data == null);
    return data ?? Something.DefaultValue;
}
Run Code Online (Sandbox Code Playgroud)


Joh*_*sch 7

Nullable<T>结构的定义是:

struct Nullable<T>
{
    public bool HasValue;
    public T Value;
}
Run Code Online (Sandbox Code Playgroud)

它是以这种方式创建的:

Nullable<PackageName.StructName> nullableStruct = new Nullable<PackageName.StructName>(params);
Run Code Online (Sandbox Code Playgroud)

只需键入以下内容即可快速完成此操作:

PackageName.StructName? nullableStruct  = new PackageName.StructName(params);
Run Code Online (Sandbox Code Playgroud)

请参阅:MSDN