我有一个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]);
}
}
}
答案 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"]);
}
}