在C#中实现多种类型对象的堆栈的最佳方法是什么?

Pau*_*ore 2 c# oop

我正在用C#编写虚拟机的实现,我需要实现VM的堆栈,它可以包含两种类型的条目 - 返回条目或回溯条目.实现这个的最佳方法是什么?

我目前正在使用基类型,如下所示:

class StackEntry { }
class Return : StackEntry { uint pc; }
class Backtrack : StackEntry { uint pc; object backtrack; }

Stack<StackEntry> stack;
Run Code Online (Sandbox Code Playgroud)

这样工作正常,但最终的类型测试和向下转换感觉很笨拙.

有没有更好的方法来处理这种类型的建筑?

Mik*_*ton 6

我很难想象你将如何使用它,但基本的答案是你使用一个带有默认操作的单一类型进行后期处理

StackEntry { protected virtual void PostPop(); }
Return : StackEntry { protected override void PostPop(); }
Backtrack : StackEntry { protected override void PostPop(); }
Run Code Online (Sandbox Code Playgroud)

那有意义吗?