ITXP365(智码IT网)

分享电脑知识,传播IT技巧

致敬爱学习的您,祝您访问愉快!

C#中子类和父类的对象之间能够互相转换吗?


发布:智码IT网   阅读:
现有父类Person和派生类ChinaPerson,定义如下: 

class Person
    {
        public string Name { get; set; }

        public string Say()
        {
            return "我的名字的是:" + Name;
        }
    }



    class ChinaPerson : Person
    {
        public string SayChiess()
        {
            return "我的名字是:" + Name + ",我来自中国";
        }
    }


分别申明父类Person的实例p和子类ChinaPerson的实例cPer,那么父类的实例强制类型转换为子类和子类的实例强制转换为父类,会出错吗?

实验代码如下:

//1、子类强制转换为父类
ChinaPerson cPer = new ChinaPerson();
cPer.Name = "张三";
var s = (cPer as Person).Say();

运行结果:顺利运行,并输出预期结果


//2、父类强制转换为子类
Person p = new Person();
p.Name = "李四";
var s2 = (p as ChinaPerson).Say();

运行结果:编译能通过,运行时出错,错误信息如下:

System.NullReferenceException:“未将对象引用设置到对象的实例。”   (... as SqlSugarTest.ChinaPerson) 返回 null。


实验结论:

子类型可以强制类型转换为父类型,反之则不可以。
上一篇:没有了
下一篇:没有了

© 2001-智码IT网 www.itxp365.com版权所有

蜀ICP备2021001527号