我有两个类,除了存储在其中的数据类型外,它们几乎相同。一个类包含所有 double 值,而其他类包含所有浮点值。
class DoubleClass
{
double X;
double Y;
double Z;
}
class FloatClass
{
float X;
float Y;
float Z;
}
现在我有一个 DoubleClass 点,我想将其转换为 FloatClass。
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;
编辑
我将运算符更改为 explicit
而不是 implicit
因为我在示例中使用了 FloatClass
cast。我更喜欢使用 explicit
而不是 implicit
所以它迫使我确认对象将被转换成什么类型 (对我来说这意味着更少的干扰错误 + 可读性)。
但是,您可以使用隐式
转换,然后您只需要做:
var convertedObject = doubleObject;
关于c# - 将一个类的对象转换为另一个类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18784274/