C#之自定义的implicit和explicit转换
作者:网络转载 发布时间:[ 2014/7/24 11:15:05 ] 推荐标签:C# net
在类型转换时常会遇到隐式转换和显式转换。那我们自定义的类型要如何去定义隐式转换和显式转换?我们来看一段代码
|
public class Rational
{
private Int32 _inner_int = 0;
public Rational()
{
}
public Rational(Int32 num)
{
this._inner_int = num;
}
public Int32 ToInt32() { return this._inner_int; }
// Implicitly constructs and returns a Rational from an Int32
public static implicit operator Rational(Int32 num)
{
return new Rational(num);
}
// Explicitly returns an Int32 from a Rational
public static explicit operator Int32(Rational r)
{
return r.ToInt32();
}
public override string ToString()
{
//return base.ToString();
String s = String.Format("{0}", this._inner_int);
return s;
}
}
|
测试代码
|
class Program
{
static void Main(string[] args)
{
Rational r1 = 10;
Console.WriteLine(r1);
Int32 i = r1;
Console.WriteLine(i);
Console.ReadLine();
}
}
|
这时编辑会报错,见下图

本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。

sales@spasvo.com