问答详情
源自:4-2 自定义转换

为什么我原来的构造方法没有了

dog转换成cat之后,cat没有继承dog的名字(构造方法),名字变成了空

提问者:乌薪王 2018-11-04 19:10

个回答

  • 慕尼黑7387225
    2018-11-04 19:37:03

    public static“ explicit” operator Cat(Dog dog)

  • 慕尼黑7387225
    2018-11-04 19:35:07

    改成隐士转换

  • 乌薪王
    2018-11-04 19:33:08

    输出:我叫hommy

              wow

              我叫

              meow



  • 乌薪王
    2018-11-04 19:31:26

    using System;

    namespace 装箱与拆箱
    {   abstract public class pet
        {
            public string name;
            
            public pet(string name)
            {
                Console.WriteLine("我叫" + name);
            }
            abstract public void speak();
           
        }
        public class Dog : pet
        {
            public Dog(string name):base(name)
            {
              
            }
           
            public override void speak()
            {
                Console.WriteLine("wow");
            }
            public static explicit operator Cat(Dog dog)
            {
                return new Cat(dog.name);
            }
        }
        public class Cat : pet
        {
            public Cat(string name) : base(name)
            {

            }
            public override void speak()
            {
                Console.WriteLine("meow");
            }
           
        }
       
        class Program
        {
            static void Main(string[] args)
            {
                Dog dog = new Dog("hommy");
                dog.speak();
                Cat cat = (Cat)dog;
                cat.speak();
                
            }
        }
    }