我正在尝试用object[]
填充List<string>
,但我无法弄清楚如何使用ConvertAll。 MSDN没有帮助我。
起初我尝试创建一个Converter实例,但看起来它需要委托?
Converter<string, object> conv = new Converter<string, object>(??); //why delegate?
this.comboBox1.Items.AddRange(Form1.AnimalType.ConvertAll<object>(conv));
谢谢:)
答案 0 :(得分:0)
委托将集合的每个成员转换为请求的类型。
如果您尝试将对象转换为字符串,请尝试类似
的内容conv = o => o.ToString();
如果您尝试将字符串转换为对象,请尝试类似
的内容conv = ParseStringIntoObject;
object ParseStringIntoObject(string stringRepresentation)
{
// do whatever you need to do in order to convert your string
}
答案 1 :(得分:0)
无需转换为对象,因为.NET运行时中的所有类型都从对象继承。
如果您想将列表Form1.AnimalTypes
的成员分配到组合框,您应该只将它们添加到Items
集合中,然后您应该将DisplayMember
设置为ValueMember
的名称。要显示的属性,并comboBox.Items.AddRange(Form1.AnimalTypes);
comboBox.DisplayMember = "AnimalTypeName";
comboBox.ValueMember = "AnimalTypeId";
到要绑定的属性的名称。
object[] myArray = Form1.AnimalTypes.ToArray();
如果您只想进行转换,并且对组合框的分配无关紧要,您可以执行以下操作:
var newColOfBaseType = myList.Cast<BaseType>();
对象的继承定义的转换需要转换器类,即如果要将苹果转换为橙子则使用转换器,但如果要将appels或orange转换为fruit,则使用转换。在c#3.0中,您可以使用以下代码段来构建完整的集合:
var oranges = fruit.OfType<Orange>().Cast<Orange>();
使用Linq,您还可以从集合中过滤给定类型的条目,然后提取该特定类型的集合:
Select
使用Linq,您还可以使用var oranges = apples.Select(new Orange() { /* ... and initializers here ...*/});
进行转换:
{{1}}