语法: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());
}
}
}