0

业务对象正在返回short?数据类型。

我如何将此值放入变量中?

short? myShort = SomeBusinessObject.UserBlah;

那是对的吗?如果它为空,它会中断吗?

4

8 回答 8

4

这是正确的。您只需担心将 myShort 分配给不可为空的 short,在这种情况下您必须检查 HasValue,如下所示:

short s = myShort.HasValue ? myShort.Value : (short) 0; // or some other short value
于 2009-04-29T20:18:41.493 回答
4

要将其放入变量中,请在检查 myShort.HasValue 后使用 myShort.Value

于 2009-04-29T20:18:43.350 回答
2

您是否真的试图防止 SomeBusinessObject 为空?如果是这样,可空类型将无济于事。您仍然需要检查您的 SomeBusinessObject 是否为空。

我假设是这种情况,因为如果 UserBlah 返回一个 short 那么它永远不会为 null (因为 short 不是可为 null 的类型)。

于 2009-04-29T20:17:26.473 回答
2

不要忘记空合并运算符。

short myShort = SomeBusinessObject.UserBlah ?? 0;

如果 SomeBusinessObject.UserBlah 为空,它只是将值传递到 ?? 所以你可以把它默认为某事。

于 2009-04-29T20:22:26.883 回答
1

对,那是正确的。

于 2009-04-29T20:16:39.767 回答
1

myShort如果null业务对象返回null.

您不能myShort直接引用为值类型,所以这没关系。

您可以使用myShort.HasValue来查看是否myShort存在null

用于myShort.Value获取值。如果没有定义值,它将抛出异常。

GetValueOrDefault()即使没有定义 ( null) ,您也可以使用并传入默认值来获取值。如果可空类型为 ,则此函数返回您传入的值null

于 2009-04-29T20:18:23.773 回答
1

myShort 只有在UserBlah隐式转换为Nullable<Int16>null 并且设置为 null 时才会为 null,在这种情况下,除非您尝试访问myShort.Value.

你也可以这样做:

short defaultValue = 0;
short myShort      = SomeBusinessObject.UserBlah ?? defaultValue;
于 2009-04-29T20:18:33.117 回答
0

可空类型(C# 编程指南)

使用可空类型(C# 编程指南)

于 2009-04-29T20:19:40.587 回答