我在C#.net中有一个结构。我创建了一个该结构的对象。我需要将这个结构对象转换为ArrayList。 我正在使用:
OrderMessageStructure.OrderMessage orderToModify = new OrderMessageStructure.OrderMessage();
object neworderobject = (object)orderToModify;
ArrayList arr = new ArrayList();
arr = (ArrayList)neworderobject;
但我收到错误“无法将'OrderMessage'类型的对象强制转换为'System.Collections.ArrayList'。”
如何将对象/结构转换为ArrayList?
答案 0 :(得分:4)
您不能将任何对象转换为C#中的另一个对象。它是一种类型安全的语言。
您需要为其创建ArrayList
和Add()
结构。
更好的是,创建一个List<StructType>()
并将结构添加到其中。
CLR Via C#。阅读它。
OrderMessageStructure.OrderMessage orderToModify =
new OrderMessageStructure.OrderMessage();
ArrayList arr = new ArrayList();
arr.Add(orderToModify);
答案 1 :(得分:2)
您的问题没有足够的信息来确定答案。
如果要创建OrderMessage对象的ArrayList,则需要创建arraylist FIRST,然后创建OrderMessage的ADD实例。
如果你想要一个强类型的OrderMessage ArrayList,那么可以使用Generic Namespace中的List和OrderMessage的ADD实例。
如果OrderMessage中有一个数组结构,那么你需要为它添加一个返回arraylist的方法。您必须编写将OrderMessage转换为ArrayList的代码。
答案 2 :(得分:1)
您无法转换这两个对象,因为它们具有完全不相关的类型。为了使强制转换成功,OrderMessage必须从ArrayList继承,这几乎肯定不是你想要的。您更有可能想要将OrderMessage添加到ArrayList中,这可以像这样完成。
ArrayList arr = new ArrayList();
arr.Add(orderToModify);
答案 3 :(得分:1)
无需投射物体。只需将它们添加到您的arraylist:
ArrayList list = new ArrayList();
list.Add(myObject);
但更好的选择是使用通用列表:
List<MyObject> list = new List<MyOjbect>();
list.Add(MyObject);
通用列表的优点在于它是强类型的,因此当将对象从列表中拉出时,您不必将对象强制转换回类型。