业务对象返回short?
数据类型。
如何将此值转换为变量?
short? myShort = SomeBusinessObject.UserBlah;
这是对的吗?如果它为空,它会破坏吗?
答案 0 :(得分:4)
这是对的。你只需要担心,如果你将myShort分配给一个不可空的短片,在这种情况下你必须检查HasValue,如下所示:
short s = myShort.HasValue ? myShort.Value : (short) 0; // or some other short value
答案 1 :(得分:4)
要在检查myShort.HasValue后使用myShort.Value将其变为变量
答案 2 :(得分:2)
您是否真的试图防止SomeBusinessObject为空?如果是这样,可空类型将无法帮助您。您仍需要检查SomeBusinessObject是否为空。
我假设是这种情况,因为如果UserBlah返回一个short,那么它将永远不会为null(因为short不是可空类型)。
答案 3 :(得分:2)
不要忘记空合并运算符。
short myShort = SomeBusinessObject.UserBlah ?? 0;
如果SomeBusinessObject.UserBlah为null,它只是将值传递给??所以你可以默认它。
答案 4 :(得分:1)
是的,这是正确的。
答案 5 :(得分:1)
myShort
,则 null
将为null
。
您无法直接将myShort
作为值类型引用,因此可以。
您可以使用myShort.HasValue
查看myShort
是否null
。
使用myShort.Value
获取值。如果没有定义值,它将抛出异常。
您可以使用GetValueOrDefault()
并传入默认值以获取值,即使未定义任何值(null
)。如果可空类型为null
,则此函数返回您传入的值。
答案 6 :(得分:1)
UserBlah
可隐式转换为Nullable<Int16>
并且设置为null,则 myShort将仅为null,在这种情况下,除非您尝试访问myShort.Value
的成员,否则它不会中断
你也可以这样做:
short defaultValue = 0;
short myShort = SomeBusinessObject.UserBlah ?? defaultValue;
答案 7 :(得分:0)