转换操作符方法 笔记
有时候在实际的开发工作中会遇到将类型进行互相的转换,比如byte转换为Int
在C#中能利用一些构造器及方法方便的达到这样的效果:
class Transform
{
//默认构造器
public Transform() { }
//由一个Int32构造一个Transform
public Transform(Int32 _arg) { }
//由一个String构造一个Transform
public Transform(String _arg) { }
//将一个Transform转换为一个Int32
public Int32 ToInt32() { return 1; }
//将一个Transform转换为一个String
public String ToString() { return "1"; }
//隐式的将一个Int32转换为一个Transform实例类型
public static implicit operator Transform(Int32 _arg)
{
return new Transform(_arg);
}
//隐式的将一个String转换为一个Transform实例类型
public static implicit operator Transform(String _arg)
{
return new Transform(_arg);
}
//显示的将一个Transform实例转换为一个Int32类型
public static explicit operator Int32(Transform _transform)
{
return _transform.ToInt32();
}
//显示的将一个Transform实例转换为一个String类型
public static explicit operator String(Transform _transform)
{
return _transform.ToString();
}
}
有了这样的转换后,使用是非常的方便:
Transform t = new Transform();
t = 11;
t = "11";
Int32 _arg_int = (Int32)t;
String _arg_string = (String)t;
PS:在进行转换的时候,对于那些转换过程中不可能丢失精度或者数量级的转型操作,我们应定义为隐式转换(例如Int32转型为Transform); 对于那些在转换过程中有可能丢失精度或者数量级的转型操作,我们应定义为显式的转换(例如Transform转为Int32)