【问题标题】:how to assign an whole array to dictionary in c#如何在c#中将整个数组分配给字典
【发布时间】:2016-05-23 10:23:00
【问题描述】:

如何在c#中将数组分配给字典

下面的代码不工作

ArrayList conf_list = new ArrayList();
var variations = new Dictionary<string, List<string>>();

conf_list.Add ("hi");
conf_list.Add ("bye");
conf_list.Add ("ss");
conf_list.Add ("fefe");
conf_list.Add ("gg");
conf_list.Add ("qwq");
conf_list.Add ("trt");

variations["available"] = conf_list;

错误:

Severity    Code    Description Project File    Line    Suppression State
Error   CS0029  Cannot implicitly convert type 'System.Collections.ArrayList' to 'System.Collections.Generic.List<string>'  ConsoleApplication1 c:\users\administrator\documents\visual studio 2015\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs 27  Active

如何将孔数组一次推入字典??

注意:我不想用这个方法

variations["available"] = new List<string> { "hi","bye" };

【问题讨论】:

  • 您的意思可能是使用List&lt;string&gt; 而不是ArrayList
  • 如果您将字典声明为Dictionary&lt;string, List&lt;string&gt;&gt;,为什么要使用ArrayList 而不是List&lt;string&gt;
  • 还要注意ArrayListList&lt;T&gt; 都不是数组。请注意,编译器会准确地告诉您出了什么问题:“无法将类型 'System.Collections.ArrayList' 隐式转换为 'System.Collections.Generic.List&lt;string&gt;'”它们不是一回事 - 所以不要尝试像使用它们一样使用它们。

标签: c# arrays dictionary


【解决方案1】:

使用

var variations = new Dictionary<string, ArrayList>();

List<string> conf_list = new List<string>();

这两种类型不能互换使用。

【讨论】:

    【解决方案2】:

    您需要将 ArrayList 转换为 List&lt;string&gt;。可以这样做:

    variations["available"] = conf_list.OfType<string>().ToList();
    

    您出错的原因是conf_list 的类型为ArrayList,它不能隐式转换为List&lt;string&gt;

    通过使用OfType&lt;string&gt;(),您可以获得strings 的枚举,使用ToList(),您可以将此枚举转换为List&lt;string&gt;,然后可以将其添加到您的字典中。


    或者,您可以从一开始就将您的conf_list 声明为List&lt;string&gt;

    List<string> conf_list = new List<string>();
    conf_list.Add ("hi");
    //...
    

    【讨论】:

      【解决方案3】:

      试试这个

      List<string> lstString = new List<string>();
      var variations = new Dictionary<string, List<string>>();
      variations.Add("available", lstString);
      

      如果你想将ArrayList 添加到Dictionary 中,那么你需要创建Dictionary 之类的东西...

      var variations = new Dictionary<string, ArrayList>();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-04
        • 2018-01-10
        • 2020-12-07
        • 2016-10-09
        • 1970-01-01
        • 2021-10-13
        相关资源
        最近更新 更多