【问题标题】:Using a String to decide which Array to use (c#)使用字符串来决定使用哪个数组(c#)
【发布时间】:2014-07-29 11:21:32
【问题描述】:

想问有没有办法把String转成arrayname?

示例:

我有 4 个数组: 姓名、年龄、性别、国籍

现在我得到了一个字符串,上面写着“国籍”,现在我想在我的代码中使用该字符串来访问国籍数组。或者,如果我将字符串更改为“年龄”,我想访问年龄数组......我希望它清楚我的意思。

我真的不知道如何做到这一点,希望您至少可以给我意见,在哪里可以找到有关该主题的一些信息。

希望有人可以帮助我!

来自德国的问候,

马文

编辑:

感谢所有答案.. 到目前为止,我的编程并不是很好,所以我不确定我是否理解所有内容。

我想如果我用字符串做所有事情或者在数组中有不同的类型并不重要,因为我可以转换它们吗?

到目前为止,我从未使用过列表。我想我的例子可能不是最好的,所以这是一个新的例子:

我得到了不同的数组(假设所有字符串): 我为桌面游戏制作了这个程序

name              //Name of a hero
points            // Costs for using it
leader            //kinda the fraction
character         //an attribut units got
abilityhelpers    //what does a hero need to be helpfull for this unit
where             //where to serach

所以我得到了不同的单位:

pete
10
leader a
friendly
less 100 //so every hero that costs less then 100 points helps him
points

mike
110
leader b
smart
leader a //so he is good with heros from leader a
leader

程序随机选择一个单位,假设它选择迈克......不,它看起来他得到了什么能力助手......在这种情况下它的“领导者a”所以他应该遍历数组领导者中的所有条目并添加每个将“领导者”列入名单的英雄。 然后它会从这个列表中随机选择一个并为他做同样的事情......所以如果选择了 Pete,它会在数组 Points 中搜索所有得分低于 100 的人。

但我不想要 100 万个不同可能性的案例(有 8 种不同的属性,有时有 3 种作为良好匹配的限制(例如:领导者 a,友好,低于 5 分))

我想要类似的东西:

字符串 a = 其中 [0]; //一个字符串,包含在哪里搜索助手的信息

for(i=0;1<array.length;i++)
{
if (a[i]==abilityhelpers[0])
    //then add name[i] to the list
}

我不想要这个问题的确切代码(我猜我不会得到它),我很想知道这是否可能,如果是的话,一些建议在哪里寻找或一些食物供我思考^^

【问题讨论】:

  • 如果数组都包含相同的类型,您可以使用Dictionary&lt;string, List&lt;SomeType&gt;&gt;,使用字符串键入数组。然后您可以像这样访问:myDictionary["age"]
  • System.Array 类型已经实现了多个接口,例如 IEnumerable、ICollection 和 IList。那么,为什么不像 Charleh 建议的那样把它做成一个列表或字典呢。

标签: c# arrays string transform


【解决方案1】:

您可以使用Generic Dictionary,其键为字符串,值为字符串array / List&lt;string&gt;

Dictionary<string, string[]> dictionary = Dictionary<string, string[]>();

或者

Dictionary<string, List<string>> dictionary = Dictionary<string, List<string>>();

【讨论】:

    【解决方案2】:

    为什么不将数组存储在字典中。类似的东西:

    Dictionary<string, Array> arrays = new Dictionary<string,Array>();
    
    string key="key";
    
    Array ages = arrays[key];
    

    【讨论】:

      【解决方案3】:

      如果您的数组属于不同类型(所以您不能使用Dictionary&lt;String, T&gt;)我建议利用DataTable

        DataTable table = new DataTable();
      
        // Age is integer: 34, 81, 19...  
        table.Columns.Add("Age", typeof(int));
        // Nationality is String: "English", "Dutch"... 
        table.Columns.Add("Nationality", typeof(String));
        // Gender is Char: 'M' or 'F' 
        table.Columns.Add("Gender", typeof(Char));
        // ...
      

      从表格中获取数据:

        int[] ages = table
          .AsEnumerable()
          .Select(row => row["Age"])
          .ToArray();  
      

      【讨论】:

        猜你喜欢
        • 2017-05-06
        • 2012-07-20
        • 1970-01-01
        • 2021-11-20
        • 2014-10-18
        • 2021-10-17
        • 1970-01-01
        • 1970-01-01
        • 2016-05-18
        相关资源
        最近更新 更多