在运行时更改通用对象的类型?

时间:2015-03-01 00:46:53

标签: c# generics types casting

我有一个名为ResizingArray的泛型类,其目的不言而喻。

所以我可以这样做:

ResizingArray<ClassA> array = new ResizingArray<ClassA>();

我希望能够获取现有实例,然后执行此操作:

array = new ResizingArray<ClassB>();

这是可能的,如果是的话,怎么办呢?我希望它成为同一个对象的原因是出于与内存相关的原因,我不会参与其中。

1 个答案:

答案 0 :(得分:1)

假设我们讨论的是对象而不是结构,你只是在讨论重用指针,而不是实际对象使用的内存。所以没有明显的记忆益处。如果你问我,过早优化的经典案例。

只需创建一个新变量,并尽可能将变量的范围保持为本地。相信我,你不会看到差异。否则,唯一的方法是恢复对象,但是丢失可维护性绝对不值得你节省的几个字节。