Nullable <int>To Int Ошибка - PullRequest
       0

Nullable <int>To Int Ошибка

2 голосов
/ 06 сентября 2011

Я получаю это

Обнуляемый объект должен иметь значение.

ошибка в этой строке:

   results.Test= installment.Test1.Value;

Мое свойство 'Test' выглядит так:

 [DataMember]
 public int Test{ get; set; }

И мое свойство Test1 выглядит так в LINQ2SQL Designer:

public System.Nullable<int> Test1
    {
        get
        {
            return this._Test1;
        }
        set
        {
            if ((this._test1!= value))
            {
                this.OnTest1Changing(value);
                this.SendPropertyChanging();
                this._Test1= value;
                this.SendPropertyChanged("Test1");
                this.OnTest1Changed();
            }
        }
    }

Что я здесь не так делаю?

Ответы [ 8 ]

3 голосов
/ 06 сентября 2011

Ваша Test1 собственность (все еще) null.Базовое поле _Test1 по умолчанию будет null.
. Вы можете использовать

results.Test = installment.Test1 ?? 0;

, если 0 является приемлемым значением по умолчанию.

1 голос
/ 06 сентября 2011

Попробуйте использовать это вместо:

results.Test = installment.Test1.GetValueOrDefault(-1); //set default value 
0 голосов
/ 06 сентября 2011

Если вы собираетесь использовать свойство value, оно должно иметь значение, которое не является нулевым.Вы можете проверить, имеет ли свойство значение, используя свойство HasValue.

var test = (Test1.HasValue) ? (int?)Test1.Value : null;

Вы можете использовать переменную напрямую и не использовать свойство Value.

var testing = Test1;
0 голосов
/ 06 сентября 2011

попробуйте это.

if (installment.Test1.HasValue) results.Test = installment.Test1.Value;

0 голосов
/ 06 сентября 2011

Test1.Value сгенерирует, если Test1.HasValue вернет false.

0 голосов
/ 06 сентября 2011

Похоже, installment.Test1.Value является нулевым и не может быть назначен на int

Попробуйте

results.Test= installment.Test1 ?? 0;
0 голосов
/ 06 сентября 2011

Value из installment.Test1.Value - это null, и вы пытаетесь присвоить ему свойство типа integer, не допускающее нулевого значения Test.

0 голосов
/ 06 сентября 2011

installment.Test1.Value; Предполагается, что installment.Test1 действительно имеет значение. Ошибка, которую вы получаете, однако, означает, что это не так, и что свойство фактически null. Это неожиданно?

...