Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在unity3d中将字符串转换为int时出现C#错误_C#_Arrays_String_List_Unity3d - Fatal编程技术网

在unity3d中将字符串转换为int时出现C#错误

在unity3d中将字符串转换为int时出现C#错误,c#,arrays,string,list,unity3d,C#,Arrays,String,List,Unity3d,我在使用C#时遇到了一个问题,我试图创建一个包含我所需的所有信息的列表或数组 0000、00010002等 我想将其放入一个列表/数组中,并使用此信息在角色选择屏幕上实例化一个模型。然而,这是代码的一部分,所有的事情都开始变得一团糟 我只是试着读出这些数字并把它们加到列表中 void Start () { gestureListener = this.GetComponent<GestureListener>(); for (int i = 0; i <

我在使用C#时遇到了一个问题,我试图创建一个包含我所需的所有信息的列表或数组

0000、00010002等

我想将其放入一个列表/数组中,并使用此信息在角色选择屏幕上实例化一个模型。然而,这是代码的一部分,所有的事情都开始变得一团糟

我只是试着读出这些数字并把它们加到列表中

    void Start () {
    gestureListener = this.GetComponent<GestureListener>();
    for (int i = 0; i < numberOfModels; i++) {
        string b = i.ToString("0000");
        List<string> mylist = new List<string>(new string[b]);
        Debug.Log (mylist);
        break;
    }
}
void Start() 
{
    List<string> mylist = new List<string>();
    gestureListener = this.GetComponent<GestureListener>();
    for (int i = 0; i < numberOfModels; i++) {
        string b = i.ToString("0000");
        myList.Add(b);
        Debug.Log (mylist);
        break;
    }
}
错误发生在第5行,但对我来说这似乎是一条不可替代的线

变量B是一个
字符串
,因此我不知道为什么列表将其视为
int


如果你能帮忙,请告诉我,非常感谢

如果您试图实例化一个列表,然后将元素添加到此列表中,那么您就搞错了。您当前正在实例化一个新列表,每次迭代时只包含一个元素。换句话说,您并不是在使用列表,而是在每次循环时创建一个新列表

在循环外部创建字符串列表,然后从循环内部添加到其中

您应该有这样的内容来填充列表

    void Start () {
    gestureListener = this.GetComponent<GestureListener>();
    for (int i = 0; i < numberOfModels; i++) {
        string b = i.ToString("0000");
        List<string> mylist = new List<string>(new string[b]);
        Debug.Log (mylist);
        break;
    }
}
void Start() 
{
    List<string> mylist = new List<string>();
    gestureListener = this.GetComponent<GestureListener>();
    for (int i = 0; i < numberOfModels; i++) {
        string b = i.ToString("0000");
        myList.Add(b);
        Debug.Log (mylist);
        break;
    }
}
如果你需要更多的例子,看看 这是一个统一的概念。

void Start(){
void Start () {
    gestureListener = this.GetComponent<GestureListener>();
    List<string> myList = new List<string>();
    for (int i = 0; i < numberOfModels; i++) {
        string b = i.ToString("0000");
        myList.Add(b);
        Debug.Log (mylist);
        break;
    }
    //myList is populated with all the numberOfModels here.
}
gestureListener=this.GetComponent(); List myList=新列表(); 对于(int i=0;i
不要在循环中创建新列表。按照现在的方式,您正在尝试创建一个新的列表(无论如何,您都会将其丢弃),该列表具有逐渐增大的空字符串数组。例如,如果
numberOfModels
值为100,您将拥有100个!列表中的空字符串元素(如果已保存)


只需在for循环外创建一个列表,然后将字符串
b
添加到循环内的列表中。

这部分的问题在于:
newstring[b]
@Dmitry
b
是一个字符串,这也不起作用。你是说
i
?因为如果我用b替换新字符串[b],它会给我这个错误:错误CS1502:与'System.Collections.Generic.List.List(System.Collections.Generic.IEnumerable)最匹配的重载方法'有一些无效的参数我正在与kinect合作,我正在尝试实现一个角色选择,该选择会对刷卡动作做出反应,每次我运行forloop时,它都必须实例化下一个数字。我的代码与Ron Beyer相同,如果没有帮助,是什么让你接受这个答案的?在进入循环之前,您的数字集合将被实例化,在循环内部,您只需向集合添加一个数字,然后中断循环,这种逻辑毫无意义。你到底想在这里做什么,试着更好地分解它,也许我们可以更好地帮助你;我使用了你的答案,因为在我画出我希望代码如何循环后,我得出结论,你的答案是最好的,因此我在这个案例中接受你的答案。我编写了我的代码,所以这个forloop会提取我层次结构中的所有模型数量,并将它们放在一个列表中。然后我使用第二个变量来计算刷卡次数,并使用这个数字从forloop中选择数字,这使我每次都能得到正确的型号,其中有一个自动块,可以检查新型号,这样我就不必每次都手动添加所有内容了。非常感谢你的回答,这对我帮助很大@尼尔斯很高兴你让它工作,也很乐意帮忙。谢谢你的回答,因为它让我明白了我真正需要的是什么。