语句首先:
if(dr["AskingPriceFrom"]!=System.DBNull.Value)
objFilters.AskingPriceFrom=Convert.ToDecimal(dr["AskingPriceFrom"]);
else
objFilters.AskingPriceFrom=null;
声明第二:
objFilters.AskingPriceFrom=Convert.ToDecimal(
dr["AskingPriceFrom"]!=System.DBNull.Value ? dr["AskingPriceFrom"] : null
);
这两种说法有什么区别?
在第一条语句,当值的if-else条件,那么它正确地存储空价值是空的;但是,如果在第二种情况下数值为空,那么它将存储0
而不是存储null值。 AskingPriceFrom
是一个get-set字段存储的十进制值。我试图在问号后只转换dr["AskingPriceFrom"]
,但声明给了我一个错误。
有什么办法来保护空值从十进制转换?
在功能上,没什么不同。 – leppie
在你的第二条语句中,你正在做一个转换为'null'的十进制数,它返回一个0.你应该在里面移动convert语句。 – ryadavilli
[C#?:Conditional Operator]的可能重复(http://stackoverflow.com/questions/1171717/c-sharp-conditional-operator) – CesarGon