在数据库操作中,会遇到在int的单元格恰好为NULL值的情况,这个时候我们可以直接判断是否为null然后进行赋值,有人就想那我刚好用一下:?表达式不就好了:
int num = reader.GetInt32(0) ? null : reader.GetInt32(0);
这时候编译器会报错,原因就是? :表达式要求: 左右的值必须是一个类型,但是int是值类型,而null是引用类型,所以编译器自然就报错了。这时候我们可以这样写:
int? num = reader.GetInt32(0) ? null : (int?)reader.GetInt32(0);
这个时候num既可以为int也可以为null,这样这个问题就解决了。