永发信息网

i.tostring()和Convert.ToString(i) 区别

答案:5  悬赏:20  手机版
解决时间 2021-02-23 05:40
  • 提问者网友:一抹荒凉废墟
  • 2021-02-22 21:08
int i=0,请问i.tostring()和Convert.ToString(i) 区别,主要想了解两个操作过程是否装箱?及装箱过程
最佳答案
  • 五星知识达人网友:末日狂欢
  • 2021-02-22 22:15
C#中没区别 ToString()的实现还和用Convert实现相同。
至于装箱,估计楼主多虑了。
1. 两个不同的类型转换,一定存在创建目标对象的过程。即创建一个字符串引用。
2. 平提到的装箱,一般存在于 int 到 Int32时的转换,但C#中实质Int32是结构体,并非Java中的一个是值类型,一个是包装类的关系。int只是C#中为Int32提供一个简易的关键字形式出现,编译为IL后还是以Int32表示。
Int32的定义:
public struct Int32 : IComparable, IFormattable,
IConvertible, IComparable, IEquatable
全部回答
  • 1楼网友:低音帝王
  • 2021-02-23 02:23
--'冰麟轻武' 正解
  • 2楼网友:山有枢
  • 2021-02-23 01:55
只要是值类型 转换为引用类型 肯定装箱了。
  • 3楼网友:佘樂
  • 2021-02-23 01:26
反射系统源码,其实 Convert.ToString(i) 调用了 value.ToString(CultureInfo.CurrentCulture); 之后调用了Number.FormatInt32(this, null, NumberFormatInfo.GetInstance(provider)); 而i.tostring() 调用了Number.FormatInt32(this, null, NumberFormatInfo.CurrentInfo); 所以 其实他们是一样的 如果硬要分割高下,那么i.tostring()的效率略高 因为他少了NumberFormatInfo.GetInstance(CultureInfo.CurrentCulture)这一步的操作 他的返回值就是 CultureInfo.CurrentCulture NumberFormatInfo GetInstance(IFormatProvider formatProvider) 方法中有一句话: numInfo = formatProvider as NumberFormatInfo; if (numInfo != null) { return numInfo; } 所以可以看出他们是一样的 他们最后都调用了 public static extern string FormatInt32(int value, string format, NumberFormatInfo info); 这个是一个extern 外部方法,无法看到源码 至于是否装箱,就不得而知了 我个人认为应该是没有装箱的,只是使用int从新new了一个String对象 已经无法对该对象拆箱了
  • 4楼网友:夜余生
  • 2021-02-22 23:53
string.valueof()它可以将java基本类型(int,double,boolean等)和对象(object)转换成string型 tostring()是对象的方法,它可以将该对象转换成string型,转换算法根据类型实际需要而定 ,基本上java里面每个对象都会有一个tostring方法。 两者的运行结果都是相同的,只是原理不一样
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯