C#,运营商'??'不能应用于'decimal'和'decimal'类型的操作数

时间:2012-09-18 15:01:01

标签: c# asp.net

public decimal v1 {
  get {
    return this._v1; 
  }
  set {
    this._v1 = value ?? 0M;  // also I tried, default(decimal)
  }
}

错误消息说:

运营商'??'不能应用于'decimal'和'decimal'

类型的操作数

为什么它不起作用,我该怎么办呢?

4 个答案:

答案 0 :(得分:14)

decimal类型不能为null,因此null-coalesce运算符在这里没有意义。只需将_v1设置为value

答案 1 :(得分:5)

这些是值类型,不能null您可以使用Nullable<decimal>

private decimal? _v1;
public decimal? V1
{
    get
    {
        return this._v1;
    }
    set
    {
        this._v1 = value ?? 0M;
    }

}

答案 2 :(得分:1)

是小数吗?或小数

??使用小数?但不是小数,因为小数永远不能为空。

http://msdn.microsoft.com/en-us/library/ms173224.aspx

答案 3 :(得分:1)

那是Null Coalescing Operator。由于decimal不能为null,因此不能使用decimal。

如果您需要此功能,可以使用可以设置为null的decimal?

public decimal? v1 
{
    get 
    {
        return this._v1; 
    }
    set 
    {
        this._v1 = value ?? 0M;
    }
}