zoukankan      html  css  js  c++  java
  • 值转换为可空类型

    int? 这种类型实际上是Nullable<int>类型的实例,这里不过多介绍Nullable,只说明一点它在int的基础上可存储了null值,有时候在数据库操作时,我们会创建一个用于封装所需参数的类Model,若数据库中某个Int类型的字段可为空,为了保证与数据库同步,我们会在Model里给该字段定义为int?类型,但在查询取出来的时候就出现问题了,如果数据库中是空,reader["xxx"] 返回的是object类型,而我们要转为int类型只能Convert.ToInt32(reader["xxx"]); 但这时候reader["xxx"]的值为{} Dbnull.Value 空的意思。空是无法转换成Int32的 会抛出异常的 但是有没有方法能狗Convert.ToInt32?,使用int32?强转同样会抛异常,这时怎么办呢?? ?: 都会告诉你两侧类型不一致导致无法使用。

     1   public static object ChanageType(this object value, Type convertsionType)
     2         {
     3             //判断convertsionType类型是否为泛型,因为nullable是泛型类,
     4             if (convertsionType.IsGenericType &&
     5                 //判断convertsionType是否为nullable泛型类
     6                 convertsionType.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
     7             {
     8                 if (value == null || value.ToString().Length == 0)
     9                 {
    10                     return null;
    11                 }
    12 
    13                 //如果convertsionType为nullable类,声明一个NullableConverter类,该类提供从Nullable类到基础基元类型的转换
    14                 NullableConverter nullableConverter = new NullableConverter(convertsionType);
    15                 //将convertsionType转换为nullable对的基础基元类型
    16                 convertsionType = nullableConverter.UnderlyingType;
    17             }
    18             return Convert.ChangeType(value, convertsionType);
    19         }
  • 相关阅读:
    用指针方法排序数组
    struct和typedef struct
    结构体类型定义的一般式
    HDOJ1020 Encoding
    malloc函数详解
    新手入门 acm 输入输出练习
    【算法入门】广度/宽度优先搜索(BFS)
    C++栈和队列
    hdu畅通工程
    codevs 2639 约会计划
  • 原文地址:https://www.cnblogs.com/Gxqsd/p/9214610.html
Copyright © 2011-2022 走看看