zoukankan      html  css  js  c++  java
  • 自定义转换

    对自定义的结构或者类定义显示或隐式转换

    隐式转换  public static是必不可少的

    隐式 关键字 implicit

    操作 关键字 operator 

     class Program
        {
            static void Main(string[] args)
            {
                
    
                Dog D2 = new Dog("DD2");
                Cat C2 = D2;//已经在Dog类中定义了隐式转换
                C2.PrintName();
                C2.Speak();
    
            }
    
        }
        abstract public class Pet
        {
            protected string Name;
            public Pet(string name)
            {
                Name = name;
            }
            public void PrintName()
            {
                Console.WriteLine("Print" + Name);
            }
    
           
            abstract public void Speak();
        }
        public class Dog : Pet
        {
            static int Num;
            static Dog()
            {
                Num = 0;
            }
            public Dog(string name) : base(name)
            {
                ++Num;
            }
            new public void PrintName()
            {
                Console.WriteLine("子print名字是 " + base.Name);
            }
            //override public void Speak()
            sealed override public void Speak()
            {
                Console.WriteLine("子说,我是狗狗 " + Name);
            }
            static public void ShowNum()
            {
                Console.WriteLine("Dog's number = " + Num);
            }
            public void Lost()
            {
                --Num;
                Console.WriteLine(Name + " is Lost!");
            }
    
            public static implicit operator Cat(Dog dog)//隐式转换
            {
                return new Cat(dog.Name);
            }
        }
     public class Cat : Pet,IPlayWoolBall,IEatFish
        {
            public Cat(string name):base(name)
            {
                
            }
            new public void PrintName()
            {
                Console.WriteLine("子Print我的名字是 " + Name);
            }
            override public void Speak()
            {
                Console.WriteLine("子说,我是猫猫 " + Name);
            }
            public void PlayWoolBall()
            {
                Console.WriteLine(Name+" play wool ball");
            }
            public void EatFish()
            {
                Console.WriteLine(Name+" eat fish");
            }
        }

    显示转换 关键字 explicit

     class Program
        {
            static void Main(string[] args)
            {
                 Cat c3 = new Cat("CC3");
                Dog D3 = (Dog)c3;//把cat强制的转化成一只Dog
                D3.PrintName();
                D3.Speak();
    
            }
    
        }
        abstract public class Pet
        {
            protected string Name;
            public Pet(string name)
            {
                Name = name;
            }
            public void PrintName()
            {
                Console.WriteLine("Print" + Name);
            }
    
           
            abstract public void Speak();
        }
        public class Dog : Pet
        {
            static int Num;
            static Dog()
            {
                Num = 0;
            }
            public Dog(string name) : base(name)
            {
                ++Num;
            }
            new public void PrintName()
            {
                Console.WriteLine("子print名字是 " + base.Name);
            }
            //override public void Speak()
            sealed override public void Speak()
            {
                Console.WriteLine("子说,我是狗狗 " + Name);
            }
            static public void ShowNum()
            {
                Console.WriteLine("Dog's number = " + Num);
            }
            public void Lost()
            {
                --Num;
                Console.WriteLine(Name + " is Lost!");
            }
    
           
        }
     public class Cat : Pet,IPlayWoolBall,IEatFish
        {
            public Cat(string name):base(name)
            {
                
            }
            new public void PrintName()
            {
                Console.WriteLine("子Print我的名字是 " + Name);
            }
            override public void Speak()
            {
                Console.WriteLine("子说,我是猫猫 " + Name);
            }
            public void PlayWoolBall()
            {
                Console.WriteLine(Name+" play wool ball");
            }
            public void EatFish()
            {
                Console.WriteLine(Name+" eat fish");
            }
            public static explicit operator Dog(Cat cat)//显式转换
            {
                return new Dog(cat.Name);
            }
        }
  • 相关阅读:
    关于串口
    assigning to uiimagepickercontrollerdelegate from incompatible type
    CodeSign error: code signing is required for product type 'Application' in SDK 'iOS 7.0'
    使用和不使用navigationbar分别处理显示和返回页面
    iphone坐标系统
    A valid provisioning profile for this executable was not found.
    Could not change executable permissions on the application
    Code Sign error: a valid provisioning profile matching the application's Identifier 'com. sensoSource.VoiceRecorder' could not be found
    从零开始开发iPhone,教你如何在真机调试iPhone应用程序
    iPhone 证书导出分享给多个开发人员操作
  • 原文地址:https://www.cnblogs.com/cicily/p/10935155.html
Copyright © 2011-2022 走看看