业务对象正在返回short?
数据类型。这段代码会破坏吗?
我该如何将这个值变成一个变量?
short? myShort = SomeBusinessObject.UserBlah;
这是正确的吗?如果它为空,它会破坏吗?
业务对象正在返回short?
数据类型。这段代码会破坏吗?
我该如何将这个值变成一个变量?
short? myShort = SomeBusinessObject.UserBlah;
这是正确的吗?如果它为空,它会破坏吗?
是的,这是正确的。
你实际上是否试图防止SomeBusinessObject为空?如果是这样,可为空的类型将不会帮助你。您仍然需要检查您的SomeBusinessObject是否为空。
我假设这是这种情况,因为如果UserBlah返回一个短,那么它永远不会是null(因为short不是可为空类型)。
myShort
如果业务对象返回null
将为null
。
您不能直接引用myShort
作为值类型,所以这没问题。
您可以使用myShort.HasValue
来查看myShort
是否为null
。
使用myShort.Value
来获得该值。如果没有定义值,它会抛出异常。
您可以使用GetValueOrDefault()
并传入默认值以获取值,即使没有定义值(null
)。如果可空类型为null
,此函数返回您传入的值。
myShort只会为空,如果UserBlah
隐式转换为Nullable<Int16>
,并将其设置为null,在这种情况下也不会断裂,除非您尝试访问的myShort.Value
成员。
你也可以这样做:
short defaultValue = 0;
short myShort = SomeBusinessObject.UserBlah ?? defaultValue;
这是正确的。您只需如果你分配到myShort一个不可为空的短,在这种情况下,你必须检查的HasValue,像这样担心:
short s = myShort.HasValue ? myShort.Value : (short) 0; // or some other short value
GetValueOrDefault() – Nick 2009-04-29 20:21:45
为了得到它变成一个变量使用myShort.Value检查myShort后.HasValue
不要忘了空合并运算符。
short myShort = SomeBusinessObject.UserBlah ?? 0;
如果SomeBusinessObject.UserBlah为null,它只是将值传递给?所以你可以默认它。
我认为你需要澄清你认为可能是空的。许多答案正在对UserBlah返回的内容做出假设。我的猜测(因此我的答案)是,你试图防止SomeBusinessObject为空。然而,这是一个猜测,更多的信息会很好。 – 2009-04-29 20:22:30