【发布时间】:2015-04-25 03:49:06
【问题描述】:
试图理解 GetValueOrDefault() 的默认行为。如果我有一个可为空的属性,则 GetValueOrDefault() 应该返回底层默认值或 null 的实例化值...因为实例化值 (null) 将是值,所以我们不需要获取“默认”值。
例如:
namespace Nullable_test
{
public class AutoPropNullTest
{
public int? AutoValue { get; set; }
}
public class ManualPropNullTest
{
private int? i;
public int? ManualValue
{
get
{
return i;
}
set
{
i = value;
}
}
}
}
上面将使用空值进行实例化,但调用 ValueOrDefault 将返回零。
ManualPropNullTest x = new ManualPropNullTest();
AutoPropNullTest y = new AutoPropNullTest();
//x & y will inspect as null
int? q = x.ManualValue.GetValueOrDefault();
//q will result in zero
我知道这是一个令人毛骨悚然的问题,只是试图与我认为默认应该是什么和现实是什么相协调。
谢谢
【问题讨论】:
-
ValueOrDefaultValueForTheUnderlyingType太长,无法输入。 -
甚至
ValueOrDefaultForTheUnderlyingValueType -
是的,
GetValueOrDefault()将返回 0 - 你希望它做什么?请注意,您可以使用局部变量显示完全相同的效果 - 不需要这些属性... -
“即使 HasValue 属性为 false,GetValueOrDefault 方法也会返回一个值(与引发异常的 Value 属性不同)。”
-
@user1278561:您阅读过
GetValueOrDefault()的文档吗?鉴于您在Nullable<int>上调用它,所以它会返回一个int类型的值,它怎么会返回null?
标签: c#