【发布时间】:2010-11-11 00:40:12
【问题描述】:
我想将对象数组向上转换为不同对象类型的不同数组,如下所示
object[] 对象; // 假设它是非空的
CLassA[] newObjects = 对象作为 ClassA[]; // 假设 ClassA 的对象是有效的向上转型
除了单独向上转换每个元素之外,还有其他方法吗?
【问题讨论】:
我想将对象数组向上转换为不同对象类型的不同数组,如下所示
object[] 对象; // 假设它是非空的
CLassA[] newObjects = 对象作为 ClassA[]; // 假设 ClassA 的对象是有效的向上转型
除了单独向上转换每个元素之外,还有其他方法吗?
【问题讨论】:
正如this post 建议的那样,您也许可以执行以下技巧(未经测试):
newObjects = (ClassA[])(object)objects;
请注意,在 C# 4.0 中您不需要强制转换,您可以直接分配 newObjects = objects。
【讨论】:
或者我想你可以尝试这样的更短的语法:
newObjects = objects.Cast<ClassA>().ToArray();
【讨论】:
using System.Linq;
newObjects = objects.Select(eachObject => (ClassA)eachObject).ToArray();
【讨论】: