我有两个类几乎相等,除了存储在其中的数据类型.一个类包含所有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;
原文地址:https://www.jb51.cc/csharp/96830.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。