为了满足客户的要求,我遇到了一些问题。
我会尽量让这个例子非常简单,只是给出问题的想法并希望提出解决方案。
此时我们有一个类“Shape”,例如,shape 有一些特化,可以是正方形、三角形等。
到目前为止一切顺利,一切正常。
现在出于某种原因,我的客户想要将系统中已存在的正方形更改为三角形,但保留所有数据的形状。
这可能吗?有什么解决方法吗?
最佳答案
您不能更改对象的运行时类型。只需创建一个新三角形,复制所有相关值并丢弃正方形。如果正方形已经被许多其他对象引用,这当然会变得棘手,因为您将不得不更新所有引用。
如果替换对象不是一个选项,您可能必须想出一个可以充当任何形状的通用形状类。例如,这个类可以是一个具体形状类实例的薄包装。这使您只需用新的三角形替换包装的正方形,而外界可以保留对包装类的所有引用。
关于c# - 是否可以在 C# 中更改对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23111593/