Handle DBNull in C#

前端 未结 13 752
梦谈多话
梦谈多话 2020-11-30 01:36

Is there a better/cleaner way to do this?

int stockvalue = 0;
if (!Convert.IsDBNull(reader[\"StockValue\"]))
    stockvalue = (int)reader[\"StockValue\"];
         


        
13条回答
  •  攒了一身酷
    2020-11-30 02:24

    The shortest (IMHO) is:

    int stockvalue = (reader["StockValue"] as int?) ?? 0;
    

    Explanation:

    • If reader["StockValue"] is of type int, the value will be returned, and the "??" operator will return the result
    • If reader["StockValue"] is NOT of type int (e.g. DBNull), null will be returned, and the "??" operator will return the value 0 (zero).

提交回复
热议问题