c# - 对象自动拆箱

标签 c# casting boxing autoboxing

我对此做了一些研究,这似乎是不可能的,但没有一个答案对我的问题足够具体。我目前有一个Stack<object>我将多种不同类型的对象推送到其中。在推送它们之前,我将它们装箱为 object所以它接受它们。有没有可能的方法自动将对象拆箱为原始拆箱类型?

最佳答案

您可以使用扩展方法OfType<OneOfTheTypes>()仅将那些特定类型的对象转换为正确的类型。

您无法自动将对象转换为具有该对象所具有的运行时类型的兼容类型的编译时类型的变量。
变量的类型是编译时类型,并且编译器在编译时不知道其内容属于该类型。编译器不知道堆栈中的每个对象实际上具有什么运行时类型。您必须向编译器(通过强制转换)做出 promise ,运行时类型实际上与编译时类型匹配。

但坦白说。这种“检查我有什么类型”是典型的糟糕设计的味道。如果您有类似类型的对象或对不同类型的对象使用不同类型的存储,请尝试使用通用基类来设计代码。

关于c# - 对象自动拆箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13330266/

相关文章:

.net - .NET 中的强类型装箱值

c# - 运行时如何知道装箱值类型的确切类型?

c# - Int32.CompareTo(int x) 性能

c# - 在可视化 C# 中扩展标签?

c# - 尝试使用 PCLStorage 读取文件时卡住

c# - 在 List<MyType> 和 List<IMyType> 之间进行转换

c++ - VC是否符合警告C4407的标准?

c# - 使用绑定(bind)禁用特定的 DataGrid 单元格

c# - 与 NHibernate 的开发人员安全双向关系

c - 错误的值 - 将大字符分解为 int 数组