您的位置:首页 > 其它

自定义显式类型转换 --explicit

2008-07-03 14:17 302 查看
语法:public static explicit operator 目的类型(源类型r)

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 explicit operator Square(Rectangle r)

        {

            Square s = new Square(r.Height);

            return s;

        }

        public static explicit operator Square(int r)

        {

            Square s = new Square(r);

            return s;

        }

        public static explicit 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 = (Square)r;

            Console.WriteLine(s.ToString());

            s.Draw();

            Console.WriteLine("From int");

            Square s2 = (Square)3;

            Console.WriteLine(s2.ToString());

            s2.Draw();

            Console.WriteLine("to int");

            int i = (int)s2;

            Console.WriteLine(i.ToString());

        }

    }

  

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: