語句首先:
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