Nullable <int> To Int Error </int>

时间:2011-09-06 17:59:42

标签: c# nullable

我收到了这个

  

Nullable对象必须有值。

错误在这一行:

   results.Test= installment.Test1.Value;

我的'测试'属性如下所示:

 [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 个答案:

答案 0 :(得分:3)

您的Test1媒体资源是(仍然)null。基础字段_Test1默认为null 你可以使用

results.Test = installment.Test1 ?? 0;

如果0是可接受的默认值。

答案 1 :(得分:1)

请尝试使用此代码:

results.Test = installment.Test1.GetValueOrDefault(-1); //set default value 

答案 2 :(得分:0)

installment.Test1.Value;假设installment.Test1实际上有值。但是,您获得的错误意味着它没有,并且该属性实际上是null。这是出乎意料吗?

答案 3 :(得分:0)

Value的{​​{1}}是installment.Test1.Value,您尝试将其分配给不可为空的null类型属性integer

答案 4 :(得分:0)

看起来installment.Test1.Value为空,无法分配给int

尝试

results.Test= installment.Test1 ?? 0;

答案 5 :(得分:0)

如果Test1.Value返回false,

Test1.HasValue将抛出。

答案 6 :(得分:0)

试试这个。

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

答案 7 :(得分:0)

如果要使用value属性,则需要具有非null值。您可以使用HasValue属性检查属性是否具有值。

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

您可以直接使用变量,而不使用Value属性。

var testing = Test1;