【问题标题】:Converting dictionary keys to array in Unity在 Unity 中将字典键转换为数组
【发布时间】:2014-06-16 16:23:15
【问题描述】:

如何在 Unity 4.3 中将字典键转换为数组? (当然不是手动

This solution 似乎不起作用,我很困惑为什么。

代码:

private Dictionary<int,Client> uid2Client;
public static int[] uidList
{
    get
    {
        return instance.uid2Client.Keys.ToArray();
    }
}

错误:

Assets/sources/ClientServer.cs(144,57):错误 CS1061:类型 `System.Collections.Generic.Dictionary.KeyCollection' 确实 不包含 `ToArray' 的定义并且没有扩展方法 `ToArray' 类型 `System.Collections.Generic.Dictionary.KeyCollection' 可以找到(您是否缺少 using 指令或程序集 参考?)

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    ToArray() 方法不是 KeyCollection 类的标准部分。这是由Linq 添加的extension method

    Using System.Linq; 添加到类文件的开头。

    【讨论】:

    • 实际上,他们在first comment 中对您链接的问题的已接受解决方案进行了介绍...
    • 没有注意到评论。他们说他们是短暂的,应该被纳入帖子,不是吗? ;)
    【解决方案2】:

    您可以尝试手动将键提取到数组中:

    int[] getKeys()
    {
        List<int> keys = new List<int>();
        var keycollection = uid2Client.Keys;
        foreach(var key in keycollection)
        {
            keys.Add(key);
        }
        int[] keyArray = keys.ToArray();
        return keyArray;
    }
    

    【讨论】:

    • 当然我可以手动完成,这个问题的重点是了解是否有自动的,可能是单行的方式。另外,要了解为什么其他方法不起作用。
    【解决方案3】:
    int[] KeysToArray(){
    
        int[] array = new List<int>(dictionary.keys).ToArray();
    
        return array;
    
    }
    

    【讨论】:

    • 为什么要在将列表转换为数组之前创建一个列表?这只是工作和内存消耗的两倍。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 2021-08-10
    • 1970-01-01
    • 2011-01-14
    • 2015-05-05
    • 1970-01-01
    相关资源
    最近更新 更多