注册 登录
编程论坛 C# 论坛

int类型强制转换为object类型是否可行

步向巅峰 发布于 2014-03-29 12:54, 9127 次点击
class Program
    {
        static void Main(string[] args)
        {
            object a = 2;
            int b = 2;
            if (a == (object)b)
            { Console.WriteLine("int类型强制转换为object类型成功"); }
            else
            { Console.WriteLine("int类型强制转换为object类型失败"); }
            if (b == (int)a)
            { Console.WriteLine("object类型转换为int类型成功"); }
            else
            { Console.WriteLine("object类型转换为int类型失败"); }
            Console.ReadLine();
        }
    }
运行结果:int类型强制转换为object类型失败
            object类型转换为int类型成功
另外求教如何将截图放帖子里面
8 回复
#2
wp2319572014-03-30 06:58
对object不熟  
1、能否强制转换
2、强转有何意义
3、能否用==来判定
感觉object类型也化应该是指针的一种吧!

截图很简单  发贴时最后一个按扭
#3
步向巅峰2014-03-31 17:43
回复 2楼 wp231957
额,你的问题在C#中应该是最基本要了解的知识吧,你学的应该不是c#吧
1.object类型是基类,是一切类型的父类,所有类型都可以有基类无条件的转换过去,object类型向int类型的转换是一种隐式转换,不用声明
2.我问这个问题是想知道为啥int向object类型转换会失败,因为确实存在强式转换,我是想明白类型的转换是否有限制?有何限制?
3.这个"=="在c#中表示比较,"="在c#中表示赋值
#4
wp2319572014-03-31 18:22
嘿嘿  我没有主攻学习方向

所有的都是自学   只不过c#相对来说
学龄短了一些  而且没有纸质书
#5
hubinyes2014-03-31 20:53
不行的样子
#6
步向巅峰2014-04-01 08:20
回复 4楼 wp231957
好吧,这个问题我只能暂时放一放了
#7
shangsharon2014-04-02 16:11
转换失败是会报异常的. ==比较操作,(object)b是转换,后者有值,未报异常就说明转换成功,前者只能说明在其左右的两个对象不相等
#8
步向巅峰2014-04-26 12:40
回复 7 楼 shangsharon
你说的意思是不是int b=2强制转换为object转换成功了,不过(object)b!=2,就像char c='a'转换为int类型后的值为65一样
#9
weikeli192016-08-29 12:38
回复 楼主 步向巅峰
因为 你这个a == (object)b  两个都是引用  ==比的是地址值  他们两个当然不是同一个堆地址 所以会失败
1