C# 列表的System.Windows.Forms.ComboBox.Items.AddRange()失败<;字典入门>;
我收到来自外部软件包的C# 列表的System.Windows.Forms.ComboBox.Items.AddRange()失败<;字典入门>;,c#,data-binding,combobox,C#,Data Binding,Combobox,我收到来自外部软件包的列表 我想将它传递给需要object[] 我试过: comboBox.Items.AddRange(list.ToArray()); comboBox.Items.AddRange((object[])(list.ToArray())); 但是C#VS2013编译器失败了 以下基于ComboBox.Items.Add()的代码可以完美地工作,无需将DictionaryEntry显式转换到对象中 foreach (DictionaryEntry item in list)
列表
我想将它传递给需要object[]
我试过:
comboBox.Items.AddRange(list.ToArray());
comboBox.Items.AddRange((object[])(list.ToArray()));
但是C#VS2013编译器失败了
以下基于ComboBox.Items.Add()
的代码可以完美地工作,无需将DictionaryEntry
显式转换到对象中
foreach (DictionaryEntry item in list)
comboBox.Items.Add(item);
由于其他原因,我不想使用组合框.DataSource
属性来分配列表
有没有简单的方法可以在没有性能负担的情况下将
List
List转换为object[]
?尝试使用Cast()
方法:
comboBox.Items.AddRange(list.Cast<object>().ToArray());
comboBox.Items.AddRange(list.Cast().ToArray());
您是否确定强制转换到对象[]
会导致开销?这可能是微观优化。您应该运行测试,看看这是否真的有那么大的意义,我不认为这会是,铸造不是一个昂贵的操作。装箱/拆箱成本更高。@AustinWBryan我的意思是在代码中增加foreach示例之类的解决方案的开销,或者从List中编写派生类。对于List listAdd,使用System.Linq的方法既没有Cast()也没有Cast()方法;出现Cast方法,但编译器仍失败,错误为:错误CS1503:参数1:无法从“System.Collections.Generic.IEnumerable”转换为对其调用“object[]”ToArray()。解决方案有效。但是,我测试它比我的foreach(combobox.Item.Add())示例慢5倍