当前位置: 首页 > 编程语言 > C#

ConvertinganObjectofaClasstoAnotherShare

时间:2023-04-10 22:06:21 C#

ConvertinganObjectofaClasstoAnotherObject我有两个类,除了它们存储的数据类型不同外,它们几乎完全相同。一个类包含所有双精度值,另一个包含所有浮点值。DoubleClass类{双X;双Y;双Z;}类FloatClass{浮动X;浮动Y;浮动Z;现在我有一个DoubleClass点,我想将其转换为FloatClass。vardoubleObject=newDoubleClass();varconvertedObject=(FloatClass)doubleObject;//TODO:这是创建一个创建新FloatClass对象、填充所有值并返回它的方法的简单方法。有没有其他有效的方法来做到这一点。使用转换运算符:publicstaticexplicitoperatorFloatClass(DoubleClassc){FloatCassfc=newFloatClass();fc.X=(浮动)cX;fc.Y=(浮动)cY;fc.Z=(浮动)cZ;返回fc;}然后使用它:varconvertedObject=(FloatClass)doubleObject;编辑我将运算符更改为显式而不是隐式,因为我在示例中使用了FloatClass。我更喜欢使用显式而不是隐式,所以它迫使我确认对象将被转换成什么类型??(对我来说这意味着更少的干扰错误+可读性)。但是,您可以使用隐式转换,那么您只需要做:varconvertedObject=doubleObject;参考您可以使用转换运算符来实现这一点。例如:structFloatClass{publicFloatClass(DoubleClassdClass){//conversion...}...publicstaticexplicitoperatorFloatClass(DoubleClassdClass){FloatClassd=newFloatClass(dClass);//显式转换returnd;}}varconvertedObject=(FloatClass)doubleObject;听起来你可以在这里使用泛型:publicclassGenericClass{TX{get;放;}TY{得到;放;}TZ{得到;放;}}GenericClassfloatClass=newGenericClass();GenericClassdoubleClass=newGenericClass();您可以添加隐式类型转换运算符:publicclassDoubleClass{publicdoubleX;公共双Y;公共双Z;publicstaticimplicitoperatorFloatClass(DoubleClassd){returnnewFloatClass{X=(float)dX,Y=(float)dY,Z=(float)dZ};现在这个工作:DoubleClassdoubleObject=newDoubleClass();FloatClassconvertedObject=doubleObject;最简单的方法是使用序列化器。使用最高效的NewtonsoftJSON序列化程序。使用Newtonsoft.Json;privatevoidConvert(){DoubleClassdoubleClass=newDoubleClass{X=123.123,Y=321.321,Z=111.111};varserializeddoubleClass=JsonConvert.SerializeObject(doubleClass);(浮动类));}最好的办法就是把对象序列化再稀释以上就是C#学习教程:将一个类的一个对象转换成另一个对象如果对大家有用,需要进一步了解C#学习教程的就把全部内容分享出来,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: