无需转换为对象,因为 .NET 运行时中的所有类型都继承自对象。
如果要将列表的成员分配给Form1.AnimalTypes
组合框,则只需将它们添加到Items
集合中,然后设置DisplayMember
为要显示ValueMember
的属性的名称和要绑定的属性的名称。
comboBox.Items.AddRange(Form1.AnimalTypes);
comboBox.DisplayMember = "AnimalTypeName";
comboBox.ValueMember = "AnimalTypeId";
如果您只想进行转换并且对组合框的分配无关紧要,您可以执行以下操作:
object[] myArray = Form1.AnimalTypes.ToArray();
对于不是由对象的继承定义的转换,转换器类是必需的,例如,如果您想将苹果转换为橙子,请使用转换器,但如果您想将苹果或橙子转换为水果,请使用强制转换。在 c# 3.0 中,您可以使用以下代码段强制转换完整的集合:
var newColOfBaseType = myList.Cast<BaseType>();
使用 Linq,您还可以从集合中过滤给定类型的条目,然后提取该特定类型的集合:
var oranges = fruit.OfType<Orange>().Cast<Orange>();
使用 Linq,您还可以使用它Select
来进行转换:
var oranges = apples.Select(new Orange() { /* ... and initializers here ...*/});