我对此做了一些研究,这似乎是不可能的,但没有一个答案对我的问题足够具体。我目前有一个Stack<object>
我将多种不同类型的对象推送到其中。在推送它们之前,我将它们装箱为 object
所以它接受它们。有没有可能的方法自动将对象拆箱为原始拆箱类型?
最佳答案
您可以使用扩展方法OfType<OneOfTheTypes>()
仅将那些特定类型的对象转换为正确的类型。
您无法自动将对象转换为具有该对象所具有的运行时类型的兼容类型的编译时类型的变量。
变量的类型是编译时类型,并且编译器在编译时不知道其内容属于该类型。编译器不知道堆栈中的每个对象实际上具有什么运行时类型。您必须向编译器(通过强制转换)做出 promise ,运行时类型实际上与编译时类型匹配。
但坦白说。这种“检查我有什么类型”是典型的糟糕设计的味道。如果您有类似类型的对象或对不同类型的对象使用不同类型的存储,请尝试使用通用基类来设计代码。
关于c# - 对象自动拆箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13330266/