根据MSDN:
这 ??运算符称为空值合并运算符,用于为可空值类型或引用类型定义默认值。
但是当我运行下面的代码时:
Guid test;
Guid otherGuid = test ?? Guid.NewGuid();
我得到错误:
操作员 '??' 不能应用于“System.Guid”和“System.Guid”类型的操作数
我认为 Guid 是一种参考类型。不是这样吗?有人可以向我解释为什么这不起作用吗?
Guid
是一个结构而不是一个类,因此不能为空。
为此,您可以执行以下操作:
Guid? nullableGuid = null;
/* At some point nullableGuid is perhaps assigned... */
Guid otherGuid = nullableGuid ?? Guid.NewGuid();
GUID 是一种结构。 http://msdn.microsoft.com/en-us/library/system.guid.aspx
尝试使用Guid.Empty
来进行检查。
Guid otherGuid = test == Guid.Empty ? Guid.NewGuid() : test;