explicit与implicit必须声明为static和public
using System;
struct RomanNumeral
{
public RomanNumeral(int value)
{
this.value = value;
}
static public implicit operator RomanNumeral(int value)
{
return new RomanNumeral(value);
}
static public explicit operator int(RomanNumeral roman)
{
return roman.value;
}
static public implicit operator string(RomanNumeral roman)
{
return("Conversion not yet implemented");
}
private int value;
}
class Test
{
static public void Main()
{
RomanNumeral numeral;
numeral = 10;
// 显式地从numeral到int的转换
Console.WriteLine((int)numeral);
// 隐示地转换到string
Console.WriteLine(numeral);
// 显示地转换到int,然后显示地转换到short
short s = (short)numeral;
Console.WriteLine(s);
}
}
using System;
struct RomanNumeral
{
public RomanNumeral(int value) { this.value = value; }
static public implicit operator RomanNumeral(int value)
{return new RomanNumeral(value);}
static public implicit operator
RomanNumeral(BinaryNumeral binary)
{return new RomanNumeral((int)binary);}
static public explicit operator int(RomanNumeral roman)
{return roman.value;}
static public implicit operator string(RomanNumeral roman)
{return("Conversion not yet implemented");}
private int value;
}
struct BinaryNumeral
{
public BinaryNumeral(int value) {this.value = value;}
static public implicit operator BinaryNumeral(int value)
{return new BinaryNumeral(value);}
static public implicit operator string(BinaryNumeral binary)
{return("Conversion not yet implemented");}
static public explicit operator int(BinaryNumeral binary)
{return(binary.value);}
private int value;
}
class Test
{
static public void Main()
{
RomanNumeral roman;
roman = 10;
BinaryNumeral binary;
binary = (BinaryNumeral)(int)roman;
roman = binary;
Console.WriteLine((int)binary);
Console.WriteLine(binary);
}
}
struct RomanNumeral
{
public RomanNumeral(int value)
{
this.value = value;
}
static public implicit operator RomanNumeral(int value)
{
return new RomanNumeral(value);
}
static public explicit operator int(RomanNumeral roman)
{
return roman.value;
}
static public implicit operator string(RomanNumeral roman)
{
return("Conversion not yet implemented");
}
private int value;
}
class Test
{
static public void Main()
{
RomanNumeral numeral;
numeral = 10;
// 显式地从numeral到int的转换
Console.WriteLine((int)numeral);
// 隐示地转换到string
Console.WriteLine(numeral);
// 显示地转换到int,然后显示地转换到short
short s = (short)numeral;
Console.WriteLine(s);
}
}
using System;
struct RomanNumeral
{
public RomanNumeral(int value) { this.value = value; }
static public implicit operator RomanNumeral(int value)
{return new RomanNumeral(value);}
static public implicit operator
RomanNumeral(BinaryNumeral binary)
{return new RomanNumeral((int)binary);}
static public explicit operator int(RomanNumeral roman)
{return roman.value;}
static public implicit operator string(RomanNumeral roman)
{return("Conversion not yet implemented");}
private int value;
}
struct BinaryNumeral
{
public BinaryNumeral(int value) {this.value = value;}
static public implicit operator BinaryNumeral(int value)
{return new BinaryNumeral(value);}
static public implicit operator string(BinaryNumeral binary)
{return("Conversion not yet implemented");}
static public explicit operator int(BinaryNumeral binary)
{return(binary.value);}
private int value;
}
class Test
{
static public void Main()
{
RomanNumeral roman;
roman = 10;
BinaryNumeral binary;
binary = (BinaryNumeral)(int)roman;
roman = binary;
Console.WriteLine((int)binary);
Console.WriteLine(binary);
}
}