我有两个类几乎相等,除了存储在其中的数据类型.一个类包含所有double值,而其他类包含所有float值.
class DoubleClass { double X; double Y; double Z; } class FloatClass { float X; float Y; float Z; }
现在我有一个需要转换为FloatClass的DoubleClass.
var doubleObject = new DoubleClass(); var convertedObject = (FloatClass)doubleObject; // TODO: This
一个简单的方法是创建一个创建一个新的FloatClass对象的方法,填充所有值并返回它.有没有其他有效的方式来做到这一点.
解决方法
使用转换运算符:
public static explicit operator FloatClass (DoubleClass c) { FloatCass fc = new FloatClass(); fc.X = (float) c.X; fc.Y = (float) c.Y; fc.Z = (float) c.Z; return fc; }
然后只是使用它:
var convertedObject = (FloatClass) doubleObject;
编辑
由于我在本示例中使用了FloatClass转换,所以我将操作符更改为显式而不是隐式.我更喜欢使用显式过度隐式,所以它强制我确认对象将被转换的类型(对我来说,这意味着较少的分心错误可读性).
但是,您可以使用隐式转换,然后您只需要做:
var convertedObject = doubleObject;