使用预先存在的字符串命名数组

时间:2014-02-03 09:59:18

标签: c# arrays string set

我有一个for循环,它创建一个包含设定索引数的字符串数组,并用字符串填充它。我将有一个第二个for循环,它会生成更多数组,并将这些数组命名为我之前数组中的字符串。它不会把字符串作为名称,所以我卡住了。有什么建议来解决这个问题吗?

我是用C#做的。

谢谢

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class World : MonoBehaviour {

    public int WorldSize;
    const int q = 1000;
    const int w = 100;
    string [] world;

    // Use this for initialization
    void Awake () {

        world = new string[((WorldSize / q) * 2)];

        //int[,,] map = new string[((WorldSize / q) * 2)];

        for (int i = 0; i < ((WorldSize / q) * 2); i++){

            string h = i.ToString();

            world[i] = ("Region" + h);
            Debug.Log(world[i]);

        }



        Dictionary<string, string[]> regions = new Dictionary<string, string[]>();

        for (int i = 0; i<world.Length; i++) {
            string h = i.ToString();
            regions.Add(world[i], new string[q/w]);
            Debug.Log(regions["Region" + h]);
        }


    }
    }

3 个答案:

答案 0 :(得分:0)

所以,如果我正确理解你,你就会有这样的事情:

string[] strArr = new string[...];
for...
{
    //something happens to strArr
}

现在,您要为strArr中的每个字符串元素创建一个字符串数组,并为该数组赋予与strArr中的值对应的名称。如果是这种情况,您可能需要查看Dictionary<T, K>类:

string[] strArr = new string[...];
for...
{
    //something happens to strArr
}

Dictionary<string, string[]> myArrays = new Dictionary<string, string[]>();
foreach(string element in strArr)
{
    myArrays.Add(element, new string[size]);
}

您可以按照以下方式访问数组:myArrays["index"]

一些说明: 上面的代码假设您事先知道数组的大小。这可能并不总是可能的,这就是为什么我建议您使用List<string>而不是字符串数组。

答案 1 :(得分:0)

C#是一种强类型语言,您无法使用动态名称创建var。 如果您需要此功能,我建议使用字典。在第一个字段中,您可以放置​​所需的密钥,在秒中,您需要的值

答案 2 :(得分:0)

您的错误很可能是由错误引起的:new string[((WorldSize / q) * 2)]创建了一个新数组,因此您不希望在Awake()的循环中执行此操作。

尝试:

public class World : MonoBehaviour {
    public int WorldSize;
    const int q = 1000;
    const int w = 100;
    string[] world;

    // Use this for initialization
    void Awake () {

        //int[,,] map = new string[((WorldSize / q) * 2)];
        world = new string[((WorldSize / q) * 2)];

        for (int i = 0; i < ((WorldSize / q) * 2); i++){
            string h = i.ToString();
            world[i] = ("Region" + h);
            Debug.Log(world[i]);

        }
        Dictionary<string, string[]> regions = new Dictionary<string, string[]>();
        foreach(string element in world)
        {
            regions.Add(element, new string[q/w]);    
        }
        Debug.Log(regions["Region1"]);
    }
}