声明之间的区别

ALI*_*ANI 3 .net c# nullable declaration

这两个代码有什么区别:

public uint? a;
public uint a;
Run Code Online (Sandbox Code Playgroud)

我想知道如果我们使用有什么区别?在int或double或其他之后

提前致谢

Hab*_*bib 10

uint?例如,它是一个可空类型,它可以保存空值.

uint? a;
uint b;

a = null;
b = null; //this will cause error
Run Code Online (Sandbox Code Playgroud)

在C#4.0中,您可以使用null合并运算符进行检查

    b = a ?? 0;
Run Code Online (Sandbox Code Playgroud)

和...一样

    if (a.HasValue)
        b = a;
    else
        b = 0;
Run Code Online (Sandbox Code Playgroud)


Mat*_*tzi 5

值类型不能保存空值,因为它们不是对象.用?您指定要在值类型周围使用不可见的包装器,并将其设置为null.

int a = null  // won't work
int? b = null // works
Run Code Online (Sandbox Code Playgroud)