首页 > 其他分享 >自定义转换

自定义转换

时间:2023-03-13 19:46:17浏览次数:40  
标签:转换 name 自定义 dog Dog Cat public Speak

显示转换:static explicit operator

隐式转换:static implicit operator

internal class Program
    {
        static void Main(string[] args)
        {
            //基础转换
            int a = 1; float b = a; 
            int c = 'c';//char类型可以隐式转换成对应的ASCII码           
            int d =Convert.ToInt32(null); //显示
            Console.WriteLine($"{a},{b},{c},{d}");
            //自定义转换
            Dog dog = new Dog("阿黄");
            dog.Speak();
            Cat cat = (Cat)dog;//显示
            cat.Speak();
            dog = new Cat("咪咪");////隐式
            dog.Speak();
            Console.ReadKey();
        }
    }

    abstract public class Animal
    {
        public string _name = "";
        public Animal(string name)
        {
            this._name = name;
        }
        abstract public void Speak();
    }
    public class Dog : Animal
    {
        public Dog(string name) : base(name)
        {
        }
        public override void Speak()
        {
            Console.WriteLine($"汪汪!我的名字叫{_name}");
        }       
        //传入的参数是要转换的实例,而操作符类型是转换后的实例
        public static implicit operator Dog(Cat cat)
        {
            return new Dog(cat._name);
        }
    }
    public class Cat:Animal
    {
        public Cat(string name) : base(name)
        {
        }
        public override void Speak()
        {
            Console.WriteLine($"喵喵!我的名字叫{_name}");
        }
        public static explicit operator Cat(Dog dog)
        {
            return new Cat(dog._name);
        }
    }

 

标签:转换,name,自定义,dog,Dog,Cat,public,Speak
From: https://www.cnblogs.com/xixi-in-summer/p/17212562.html

相关文章

  • qt自定义槽函数
    自定义一个类:如果你想在QLabel中使用自定义的槽函数,可以按照以下步骤进行操作:创建一个类,例如MyLabel,继承自QLabel。在MyLabel类中声明一个槽函数,例如mySlo......
  • js技术之“自定义包含方案”
    调用//用于判断包含functiondiaoyong(arr,str){//初始化varsizes=['L','XL','S','M'];for(vari=0;i<sizes.length;i++){vars......
  • 1.javaScript日期格式化转换
    //(newDate()).Format("yyyy-MM-ddhh:mm:ss.S")==>2006-07-0208:09:04.423Date.prototype.Format=function(fmt){varo={"M+":this.getMonth()+1,//mont......
  • AI机器学习模型python到C/C++的转换播
    了解过机器学习的人应该都知道python的sklearn库非常好用的机器学习助手。从sklearn导入某个机器学习的库,调用fit函数即可生成模型,用来预测测试数据。1、保存模型如......
  • echarts自定义legend图例
    本次使用vue3、echarts版本使用5.4.1:执行命令:[email protected],即可安装utils文件夹下定义echarts.ts,按需引入main.ts引入utils中定义的echarts.tsimporte......
  • 【Element】ElLoading 自定义动画
    import{ElLoading}from"element-plus";LoadingInstance=ElLoading.service({ background:"rgba(0,0,0,0.7)", customClass:"ElLoading_class",});//主......
  • 多线程结合自定义logback日志实现简单的工单日志输出
    前言这周学习了logback自定义日志格式、多线程基础、以及常见的定时器,本篇博客主要是结合以上知识实现一个简单的定时全部工单输出任务,再通过自定义的日志打印输出到......
  • 工程坐标转换成wgs84坐标系
    工程坐标转换成wgs84坐标系在BIM模型中大多采用工程坐标,但是在前端进行实际位置渲染时,往往出现实际坐标系与工程坐标之间的转换困难问题。基于此,研究了坐标系的转换原理......
  • ASP.NET Core - 配置系统之自定义配置提供程序
    4.自定义配置提供程序在.NETCore配置系统中封装一个配置提供程序关键在于提供相应的IconfigurationSource实现和IConfigurationProvider接口实现,这两个接口在上一......
  • 部分字符串函数的自定义实现
    strlen(),strcpy(),strcmp(),strcat(),strstr()等字符串函数是我们经常遇见的字符串函数,这篇文章,就让我们来尝试自定义实现这些函数。一、首先是strlen()函数,strlen()函数是......