业务对象正在返回short?
数据类型。
我如何将此值放入变量中?
short? myShort = SomeBusinessObject.UserBlah;
那是对的吗?如果它为空,它会中断吗?
这是正确的。您只需担心将 myShort 分配给不可为空的 short,在这种情况下您必须检查 HasValue,如下所示:
short s = myShort.HasValue ? myShort.Value : (short) 0; // or some other short value
要将其放入变量中,请在检查 myShort.HasValue 后使用 myShort.Value
您是否真的试图防止 SomeBusinessObject 为空?如果是这样,可空类型将无济于事。您仍然需要检查您的 SomeBusinessObject 是否为空。
我假设是这种情况,因为如果 UserBlah 返回一个 short 那么它永远不会为 null (因为 short 不是可为 null 的类型)。
不要忘记空合并运算符。
short myShort = SomeBusinessObject.UserBlah ?? 0;
如果 SomeBusinessObject.UserBlah 为空,它只是将值传递到 ?? 所以你可以把它默认为某事。
对,那是正确的。
myShort
如果null
业务对象返回null
.
您不能myShort
直接引用为值类型,所以这没关系。
您可以使用myShort.HasValue
来查看是否myShort
存在null
。
用于myShort.Value
获取值。如果没有定义值,它将抛出异常。
GetValueOrDefault()
即使没有定义 ( null
) ,您也可以使用并传入默认值来获取值。如果可空类型为 ,则此函数返回您传入的值null
。
myShort 只有在UserBlah
隐式转换为Nullable<Int16>
null 并且设置为 null 时才会为 null,在这种情况下,除非您尝试访问myShort.Value
.
你也可以这样做:
short defaultValue = 0;
short myShort = SomeBusinessObject.UserBlah ?? defaultValue;