Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 列表的System.Windows.Forms.ComboBox.Items.AddRange()失败<;字典入门>;_C#_Data Binding_Combobox - Fatal编程技术网

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倍