c# - 将一个类的对象转换为另一个类的对象

标签 c# .net type-conversion

我有两个类,除了存储在其中的数据类型外,它们几乎相同。一个类包含所有 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;

Reference

关于c# - 将一个类的对象转换为另一个类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18784274/

相关文章:

.net - 您将如何在 .NET/SQL Server 中构建这个消息处理系统?

asp.net - 使用 CompareValidator 控件将用户输入日期与今天的日期进行比较

c++ - 调用函数时从 'char' 到 'char*' 的无效转换 (c++)

c# - 如何检查代码文件的有效性?

c# - 从 JSON 下载信息(Xamarin C#)

c# - MySQL数据库连接

c# - 当 DataTemplate 子项折叠时如何隐藏 ListView 项目占位符?

C 将值 char 转换为字符串 char

c# - 将带有 '$' 的字符串值转换为 double

c# - .NET:如何对通用词典进行排序?