自定义隐式类型转换 implicit

来源:互联网 发布:python logging 编辑:程序博客网 时间:2024/05/16 19:20

将上一篇文章中的explicit关键字换为implicit即可。

using System;using System.Collections;using System.Linq;using System.Text;using System.Collections.Generic;using System.Runtime.Serialization;namespace TestCS{    public struct Rectangle    {        public int Width, Height;        public Rectangle(int width, int height)        {            this.Width = width;            this.Height = height;        }        public void Draw()        {            for (int i = 0; i < Width; i++)            {                for (int j = 0; j < Height; j++)                {                    Console.Write("*");                }            }            Console.WriteLine();        }        public override string ToString()        {            return string.Format("Rectangle, Width is {0}  Height is {1}", Width, Height);        }    }    public struct Square    {        public int Length;        public Square(int length)        {            Length = length;        }        public void Draw()        {            for (int i = 0; i < Length; i++)            {                for (int j = 0; j < Length; j++)                {                    Console.Write("*");                }            }            Console.WriteLine();        }        public override string ToString()        {            return string.Format("Sqare :length is{0} ", Length);        }        public static implicit operator Square(Rectangle r)        {            Square s = new Square(r.Height);            return s;        }        public static implicit operator Square(int r)        {            Square s = new Square(r);            return s;        }        public static implicit operator int(Square s)        {            return s.Length;        }    }    class Program    {        static void Main(string[] args)        {            Console.WriteLine(" Rectangle");            Rectangle r = new Rectangle(4, 3);            Console.WriteLine(r.ToString());            r.Draw();            Console.WriteLine("From Rectangle");            Square s = r;            Console.WriteLine(s.ToString());            s.Draw();            Console.WriteLine("From int");            Square s2 = 3;            Console.WriteLine(s2.ToString());            s2.Draw();            Console.WriteLine("to int");            int i = s2;            Console.WriteLine(i.ToString());        }    }  }
原创粉丝点击