细说Convert和Parse到底那个效率高!
2008-04-23 11:36
344 查看
前言:
好多高手,献丑了。
大家都知道在进行类型转换的时候有连个方法供我们使用就是Convert.to和*.Parse,但是疑问就是什么时候用C 什么时候用P
通俗的解释大家都知道:
Convert 用来转换继承自object类型的类型(当然所有的类型都是继承自object的),但是一般Convert用来转化直接就是obejct的类型,如我们用datareader从数据库取出一个数据的时候就是object类型的,此时你若用int.parse(dr["id"]);肯定会报错的,所以必须使用Convert.toint32(dr["id"]);
而Parse用来转换String类型的数据。
其实我们看System这个基类就会发现,他的Convert类提供了几乎所有N型到N型的转化,就是Convert也只是string类型到int型的转化,只是parse没有提供针对object的转化罢了,可以说parse是N型(除了string类型,他不提供parse的转化,仅支持Convert到其他类型的转化)。都有的一个方法,而Convert提供了泛义上的转化。
疑问来了,既然Convert提供了泛义的转化比如 string str="1234"; int32.parse(str);Convert.toint32(str);都可以达到相同的效果。哪么到底我们该用那一个,而那一个效果又会更好!
来看system这个基类:
以int到string类型的转换,不带格式的转换为例,当我们使用int32.parse(str)的时候,他其实是在调用mscorlib基类库的system类中的构造类型int32中的Parse方法。而这个方法调用了本构造中的一个重载(Overload)方法Parse。
public static int Parse(string s)
而重载的parse中采取调用system中只读函数Nunber
public static int Parse(string s, NumberStyles style, IFormatProvider provider)
Nubmer中的PasreInt32会去执行转换。
好,int的分析到此。看Convert的转换,
当我们调用Convert.toint32这个方法的时候看看Convert类是怎么执行的!
public static int ToInt32(string value, IFormatProvider provider)
你会发现他直接就去找了int这个类的Parse方法。而这个方法直接去执行了int32中parse的那个重载的方法。可见殊途同归他们最后到要落到只读类Number身上去进行类型转换。性能差距在进行到Number之前就产生了!在parse中他会直接找到自身,而Convert转化string到什么类型最终都是落到该类型的parse身上,所以针对string类型的转换还是本身类型的parse效率更高一些。
好多高手,献丑了。
大家都知道在进行类型转换的时候有连个方法供我们使用就是Convert.to和*.Parse,但是疑问就是什么时候用C 什么时候用P
通俗的解释大家都知道:
Convert 用来转换继承自object类型的类型(当然所有的类型都是继承自object的),但是一般Convert用来转化直接就是obejct的类型,如我们用datareader从数据库取出一个数据的时候就是object类型的,此时你若用int.parse(dr["id"]);肯定会报错的,所以必须使用Convert.toint32(dr["id"]);
而Parse用来转换String类型的数据。
其实我们看System这个基类就会发现,他的Convert类提供了几乎所有N型到N型的转化,就是Convert也只是string类型到int型的转化,只是parse没有提供针对object的转化罢了,可以说parse是N型(除了string类型,他不提供parse的转化,仅支持Convert到其他类型的转化)。都有的一个方法,而Convert提供了泛义上的转化。
疑问来了,既然Convert提供了泛义的转化比如 string str="1234"; int32.parse(str);Convert.toint32(str);都可以达到相同的效果。哪么到底我们该用那一个,而那一个效果又会更好!
来看system这个基类:
以int到string类型的转换,不带格式的转换为例,当我们使用int32.parse(str)的时候,他其实是在调用mscorlib基类库的system类中的构造类型int32中的Parse方法。而这个方法调用了本构造中的一个重载(Overload)方法Parse。
public static int Parse(string s)
而重载的parse中采取调用system中只读函数Nunber
public static int Parse(string s, NumberStyles style, IFormatProvider provider)
Nubmer中的PasreInt32会去执行转换。
好,int的分析到此。看Convert的转换,
当我们调用Convert.toint32这个方法的时候看看Convert类是怎么执行的!
public static int ToInt32(string value, IFormatProvider provider)
你会发现他直接就去找了int这个类的Parse方法。而这个方法直接去执行了int32中parse的那个重载的方法。可见殊途同归他们最后到要落到只读类Number身上去进行类型转换。性能差距在进行到Number之前就产生了!在parse中他会直接找到自身,而Convert转化string到什么类型最终都是落到该类型的parse身上,所以针对string类型的转换还是本身类型的parse效率更高一些。
相关文章推荐
- 细说Convert和Parse到底那个效率高!
- 细说Convert和Parse到底那个效率高!
- 细说Convert和Parse到底那个效率高!
- Convert/Parse的效率该怎么判断?
- 到底那个效率高-初始化、垃圾收集或虚拟机的问题 ?
- http 协议是一个 parse 效率不高的协议
- x = x+1,x+=1,x++那个的执行效率高
- Parse:App开发必备 让应用开发效率提高上百倍
- linux 线程切换效率与进程切换效率相差到底有多大?
- ASP.NET 2.0 两种模式website和web application到底那个好?
- Convert、Parse、TryParse、(int) 区别
- 字符串转换成整型,到底使用int.Parse,Convert.ToInt32还是int.TryParse?
- 父类是抽象的类,子类实现了父类的抽象方法,在父类中应用到了抽象的方法,知道到底调用了那个子类。
- sql中用临时表 或 创建视图那个效率比较快!
- Repeater与DataGrid的效率,到底哪个的更好?!(结论很可能和你认为的不一样!)
- [摘录]Repeater与DataGrid的效率,到底哪个的更好?!精华回帖
- server.transfer和response.redirect,convert和parse详细讲解
- C#(int)中Convert、Parse、TryParse的区别
- 使用Convert 类和Parse方法将字符串转换为数值类型
- Gson、FastJson、org.JSON到底哪一个效率更高,速度更快