为什么int.ToString() 和 Convert.ToInt32()这种类型装换不需要拆装箱呢

糟糕点师 2019-06-05 04:08:26
今天做了一下string类型和int类型的互相转换,突然想到了拆装箱的问题,就想问一下为什么int.ToString() 和 Convert.ToInt32()不会产生拆装箱,不是值类型转引用类型是装箱,引用类型转值类型是拆箱么。本人小白一个,虚心请教各位大佬,那些认为string是值类型的就不用回答了。
...全文
4793 42 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
amouslion 2019-06-13
  • 打赏
  • 举报
回复
拆装箱和数据类型转换不一样。这个你要搞清楚。 装箱符合的条件: 1.值类型可隐式转换到object类型或valuetype类型。 2.Nullable值类型可隐式转换到它实现的接口。 3.枚枚类型可隐式转换到Systen.enum类型。 拆箱符合的条件: 1.从object类型或system.valuetype到值类型的转换 2.从接口类型到值类型(实现该接口)的转换 3.从System.Enum类型到枚举类型转换
「已注销」 2019-06-13
  • 打赏
  • 举报
回复
int没有tostring
DAVE-BLACK 2019-06-11
  • 打赏
  • 举报
回复
int已经是基本数据类型了。而你调用tostring就表明是要调用对象的方法。所以默认对象已经是Integer了。记住一点你能调用方法的时候他就已经不是基本数据类型了。
糟糕点师 2019-06-10
  • 打赏
  • 举报
回复
引用 37 楼 挥泪斩女友 的回复:
我的理解拆装箱时隐式转换的吧,都显式转换了还说什么拆装箱
小老弟,按你这么说
Object object=1;int i=(int)object;
第二条语句是显示装换,那他有没有拆箱呢?
糟糕点师 2019-06-10
  • 打赏
  • 举报
回复
引用 40 楼 挥泪斩女友 的回复:
[quote=引用 39 楼 挥泪斩女友 的回复:] [quote=引用 38 楼 糟糕点师 的回复:] [quote=引用 37 楼 挥泪斩女友 的回复:] 我的理解拆装箱时隐式转换的吧,都显式转换了还说什么拆装箱
小老弟,按你这么说
Object object=1;int i=(int)object;
第二条语句是显示装换,那他有没有拆箱呢?[/quote] 可以隐式转换你非写个显式转换?所以就把我扛服了?只要你喜欢,都可以这样写[/quote] 我的观点的错的[/quote] ,小老弟看看上面大佬的评论就知道了,这不是显式隐式的问题
挥泪斩女友 2019-06-10
  • 打赏
  • 举报
回复
引用 39 楼 挥泪斩女友 的回复:
[quote=引用 38 楼 糟糕点师 的回复:] [quote=引用 37 楼 挥泪斩女友 的回复:] 我的理解拆装箱时隐式转换的吧,都显式转换了还说什么拆装箱
小老弟,按你这么说
Object object=1;int i=(int)object;
第二条语句是显示装换,那他有没有拆箱呢?[/quote] 可以隐式转换你非写个显式转换?所以就把我扛服了?只要你喜欢,都可以这样写[/quote] 我的观点的错的
挥泪斩女友 2019-06-10
  • 打赏
  • 举报
回复
引用 38 楼 糟糕点师 的回复:
[quote=引用 37 楼 挥泪斩女友 的回复:] 我的理解拆装箱时隐式转换的吧,都显式转换了还说什么拆装箱
小老弟,按你这么说
Object object=1;int i=(int)object;
第二条语句是显示装换,那他有没有拆箱呢?[/quote] 可以隐式转换你非写个显式转换?所以就把我扛服了?只要你喜欢,都可以这样写
還是 2019-06-09
  • 打赏
  • 举报
回复
不知道再说啥。本质上没有强制转换,任何转换都是用转换对象初始化一个变量,再用该变量来赋值。
哒哒BOBO李丶 2019-06-09
  • 打赏
  • 举报
回复
int 有toString方法?那不是Integer的吗?
挥泪斩女友 2019-06-09
  • 打赏
  • 举报
回复
我的理解拆装箱时隐式转换的吧,都显式转换了还说什么拆装箱
qq_43276313 2019-06-08
  • 打赏
  • 举报
回复
不是每个地方都会发生
zhong132402 2019-06-07
  • 打赏
  • 举报
回复
这个问题有点难度啊
qiyali1 2019-06-07
  • 打赏
  • 举报
回复
装箱拆箱还是需要自己好好代码里面去研究一下,
tonyghost0601 2019-06-07
  • 打赏
  • 举报
回复
打卡,开心开心
weixin_45197964 2019-06-07
  • 打赏
  • 举报
回复
装箱拆箱应该是对象在显式或者隐式转换的时候才会产生的。
g8888g 2019-06-07
  • 打赏
  • 举报
回复
henbucuo很不错打
luolei881002 2019-06-06
  • 打赏
  • 举报
回复
不是很清楚 建议百度
xiaoxiangqing 2019-06-06
  • 打赏
  • 举报
回复
不是每个地方都会发生
射手座cl 2019-06-06
  • 打赏
  • 举报
回复
引用 18 楼 wanghui0380 的回复:
隐式转换都不一定是你认为的那样,因为引用已变,“没有中国心的人,我们不会认为你是中国人”
  int i = 1;
            object o = i;
            double j = i;
            int i1 = (int) o;
            if (i.Equals(j))  //这是隐式转换,但是你看到他进不去判定了,他引用已变
            {

            }

            if (i.Equals(i1)) //他拆了箱,他还是他
            {

            }

            if (i.Equals(o)) //装了箱,他依然是他
            {

            }
if (i.Equals(j)) 
            {
                Console.WriteLine(5);
            }
            if (j.Equals(i)) 
            {
                Console.WriteLine(6);
            }
借个楼,突然发现这两个只输出了6
qq_27854933 2019-06-06
  • 打赏
  • 举报
回复
int.ToString()不就是int封装类型重写的方法吗?为什么要装箱呢?至于Convert.ToInt32()有针对不同类型参数的重载,也不需要装拆箱。
加载更多回复(22)

111,096

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧