检查十进制值是否为空

Laz*_*ale 16 c# asp.net decimal

我想检查十进制数是否为NULL或它有一些值,因为该值是从类对象的数据库中分配的:

public decimal myDecimal{ get; set; }
Run Code Online (Sandbox Code Playgroud)

然后我有

myDecimal = Convert.ToDecimal(rdrSelect[23].ToString());
Run Code Online (Sandbox Code Playgroud)

我在尝试:

if (rdrSelect[23] != DBNull.Value)
                    {
                        myDecimal = Convert.ToDecimal(rdrSelect[23].ToString());
                    }
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个:

表达式的结果始终为"true",因为"decimal"类型的值永远不会等于null

如何检查该十进制数是否有值?

Jus*_*tin 43

小数将始终具有一些默认值.如果你需要一个可以为null的类型十进制,你可以使用decimal?.那你可以做myDecimal.HasValue


rez*_*ghi 11

你可以使用这段代码

if (DecimalVariable.Equals(null))  
{
   //something statements
}
Run Code Online (Sandbox Code Playgroud)


Son*_*nül 6

decimalvalue type.NET 中的一个。并且值类型不能是null. 但是如果你使用nullable typefor your decimal,那么你可以检查你的decimalisnull或 not 。喜欢myDecimal?

可空类型是 System.Nullable 结构的实例。可空类型可以表示其基础值类型的正常值范围,外加一个额外的值。

if (myDecimal.HasValue)
Run Code Online (Sandbox Code Playgroud)

但我认为在您的数据库中,如果此列包含可为空的值,那么它应该是decimal.