1.1c#基础知识——内置数值类型转换总结(object转double详解)⽬录
⼀、类型转换
问题场景:
之前每次忘了数值类型转换都去⽹上查,今天终于痛下决⼼,将数值类型转换整理⼀番,总结⼀下各种数值类型之间的转换。分类:
以object转double为例
(⼀)TryParase
⽐如ToDouble
object对象转Double,需要先将object转为string
object o;
Double.TryParase(o.ToString,out double d);
(⼆)直接转换
(double)o;
(三)Convert.ToDouble
这种⽅法可以将任何类型(bool、char、int、string、object…)转成double
为啥它如此强⼤呢!看了⼀下源码,原来:
所有的值类型都继承⾃IConvertible,源码直接调⽤了IConvertible接⼝的ToDouble
public static double ToDouble(object value, IFormatProvider provider)
{
if(value!=null)
{
return((IConvertible)value).ToDouble(provider);
}
return0.0;
}
看了看源码,Convert.ToDouble 函数,根据参数分为以下⼏类:
object to1. ((IConvertible)value).ToDouble(provider):参数类型为DateTime、Object
2. (double)value:参数类型为int byte short long float double decimal
3. double.Parse(value):参数类型为string
所以,参考源码,我们可以根据不同的参数类型,灵活采⽤不同的转换⽅法
如果嫌太⿇烦,就直接调⽤Convert.Todouble();参考⽂档总结了⼀个万能调⽤公式:
double d;
IConvertible convert = o as IConvertible;
if(convert !=null&&(convert != DBNull.Value))
{
d = convert.ToDouble(null);
}
else
{
d =0d;
}
⼆、IConvertible
作⽤
定义了⼀个⽅法,⽤于实现,将值类型或引⽤类型,向具有同等价值的、公共语⾔运⾏时类型转换。派⽣类
System.Boolean
System.Byte
System.Char
System.DateTime
System.DBNull
System.Decimal
System.Double
System.Enum
System.Int16
System.Int32
System.Int64
System.SByte
System.Single
System.String
System.UInt16
System.UInt32
System.UInt64
也可⾃定义需要转换类型的类
欢迎各位同学评论、指正!!
参考

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。