大家好,请教一个关于c#中Convert的问题
大家好:
我们都知道在c#中数据类型转换,举例说明下:
Convert.ToInt32(参数),括号中的参数,可以是很多类型,例如string,int ,double,decimal,object等类型,一共重载了19个方法。
在这些重载的类型中,既然有了object类型,为什么还需要重载string,int,float等类型呢。
string,int,float等类型,应该都是从object继承过来了,所以写一个参数为object的方法就可以了,为什么要重载19个方法呢,请教大家帮我解释下,谢谢~!!!
[解决办法]
C#中定义的值类型包括原类型(Sbyte、Byte、Short、Ushort、Int、Uint、Long、Ulong、Char、Float、Double、Bool、Decimal)、枚举(enum)、结构(struct)
引用类型包括:类、数组、接口、委托、字符串等。
OBJECT是引用类型,但如果是int之类则这个应用可能是值,因为int也是继承自object
string在内存的表示上是引用(如果有C基础就能很好明白),但在实际使用中,.NET把string弄成了值类型。所以不要把string当引用类型看。
.NET中把引用的字符串值类型化的方案是每次对字符串变量赋值,包括字符串相加都是完全开辟新的存储空间给字符串变量使用。所以在使用string类型进行运算时比较消耗资源,此时可以使用stringbuilder类型替代。
[解决办法]
我理解为满足各种人群需要,有人就愿意以object类型传递
[解决办法]
c# 是强类型语言,如果全用object,免不了装拆箱,效率不高。
[解决办法]
装拆箱 效率太低了。
我做过实验,用List<T>和ArrayList。后者就是object类型,每次都要装拆箱。效率是List<T>三分之一
[解决办法]
建议楼主好好了解一下装箱拆箱!
[解决办法]