Попытка понять поведение по умолчанию GetValueOrDefault(). Если у меня есть свойство nullable, GetValueOrDefault() возвращает базовое значение по умолчанию или значение экземпляра null ... потому что это значение экземпляра (null) будет значением, поэтому нам не нужно получать значение по умолчанию.Когда значение 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' слишком длинный для ввода. – asawyer
Или даже 'ValueOrDefaultForTheUnderlyingValueType' – xanatos
Да,' GetValueOrDefault() 'вернет 0 - что вы ожидали от этого? Обратите внимание, что вы можете показать точно такой же эффект с локальной переменной - нет необходимости в этих свойствах ... –