C#之自定义的implicit和explicit转换

发表于:2014-7-24 09:50

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:_如_意_    来源:51Testing软件测试网采编

  在类型转换时常会遇到隐式转换和显式转换。那我们自定义的类型要如何去定义隐式转换和显式转换?我们来看一段代码
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();
}
}
  这时编辑会报错,见下图
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号