从可空类型到基础类型的转换

原创 2018年04月17日 11:16:32

在做一些复杂的类型转换之前(比如将一个数据转换成一个属性的类型,属性可能为可空类型)先判断该类型是否为可空类型,否则会报如下错误:

从“System.String”到“System.Nullable`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]”的强制转换无效。

[csharp] view plain copy
  1. Type type = typeof(Model.Users).GetProperties()[i].PropertyType;  
  2.   
  3.   
  4.                                //判断type类型是否为泛型,因为nullable是泛型类,  
  5.                                if (type.IsGenericType && type.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))//判断convertsionType是否为nullable泛型类  
  6.                                       
  7.                                {  
  8.                                    //如果type为nullable类,声明一个NullableConverter类,该类提供从Nullable类到基础基元类型的转换  
  9.                                    System.ComponentModel.NullableConverter nullableConverter = new System.ComponentModel.NullableConverter(type);  
  10.                                    //将type转换为nullable对的基础基元类型  
  11.                                    type = nullableConverter.UnderlyingType;  
  12.                                }  
  13.   
  14.                                typeof(Model.Users).GetProperty(typeof(Model.Users).GetProperties()[i].Name).SetValue(u,Convert.ChangeType(dic[item],type), null);  

C#控制台基础 可空类型与非可空类型 相互转换

慈心积善融学习,技术愿为有情学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。 using System; using System.Collections.Gener...
  • yushaopu
  • yushaopu
  • 2016-08-10 21:18:50
  • 1669

C#将数据转换为指定类型,支持对可空类型(Nullable类)转换方法示例

我们知道在C#中,引用类型可以为null,而值类型不可以为null,就是值类型必须要有值。msdn上面的解释是值类型没有足够的空量来表示空值,它的容量只够表示适合该类型的值,没有多余的容量。而数据库中...
  • showrock
  • showrock
  • 2014-02-20 16:55:27
  • 1391

可空类型的转换问题(?|nullable)

近日在利用反射机制编写的一个页面的控件数据自动获取与封装的工具类时,遇到了 “nullable的类型不能转换”的问题。原来的MODEL字段没有可空类型的,所以也一直没出问题,现在的MODEL字段中有几...
  • qwlovedzm
  • qwlovedzm
  • 2011-06-28 08:18:00
  • 3077

C#可空类型

可空类型是 System.Nullable 结构的实例。可空类型可以表示其基础值类型正常范围内的值,再加上一个 null 值。例如,Nullable,读作“可空的 Int32”,可以被赋值为 -214...
  • xyq1986
  • xyq1986
  • 2006-11-24 18:13:00
  • 7468

c#可空类型获取原始类型

值类型本来是有默认值的,初始化时不能赋值为null,否则编译时会报错.net 2.0以后增加了可空类型。 int? a,float? b,double? c, DateTime? d,boo...
  • superhoy
  • superhoy
  • 2012-09-25 18:53:21
  • 2791

深入理解C#---1.可空类型

可空类型的核心部分是System.Nullable. 静态类System.Nullable提供了一些工具方法,可以简化可空类型的使用. 首先看一看C#框架中Nullabl的定义:public st...
  • tianzeyu1992
  • tianzeyu1992
  • 2016-09-22 08:01:57
  • 535

可空类型Nullable<T>小结

1 可空类型的声明 public struct Nullable where T: struct T为结构体,所以只有值类型才可以使用Nullable声明为“可空类型”。   2 可空类型的作...
  • tiana0
  • tiana0
  • 2013-11-13 21:28:04
  • 2181

DataTable转List方法及转换时遇到可空类型问题

DataTable在一些后台操作上不是很便利,所以可以将数据集转换成List在进行操作。 简单直接的方法就是循环datatable一一对应赋值给类,然后附加到List中。但是遇到属性过多的时候就麻烦...
  • hebbers
  • hebbers
  • 2018-01-03 09:39:00
  • 200

c#中的可空类型

a
  • XuWei_XuWei
  • XuWei_XuWei
  • 2014-01-29 17:50:35
  • 648

从EXCEL导入文件时无法将DBNull.Value强制转换为类型。。。,请使用可空类型 问题的解决

 在c#编程中,经常需要从EXCEL导入数据到sql数据库,当excel的数据有空白的时候,就可能出现这样的错误提示:从EXCEL导入文件时无法将DBNull.Value强制转换为类型“System....
  • lwb75
  • lwb75
  • 2008-12-13 21:43:00
  • 1800
收藏助手
不良信息举报
您举报文章:从可空类型到基础类型的转换
举报原因:
原因补充:

(最多只允许输入30个字)