【问题标题】:ASP.Net c# adding items to jagged arrayASP.Net c#将项目添加到锯齿状数组
【发布时间】:2011-01-20 04:45:18
【问题描述】:

我试图将项目添加到锯齿状数组中,数据是从数据行视图中提取的,我有以下代码

foreach (DataRowView answer in AnswersInQuestion)
{
    answersJArray[index] = new string[noOfAnswersInQuestion];
    answersJArray[index][j] = answer["ChoiceText"].ToString();
    j++;
}

第一项可以正常添加,但是当第二项放入时,第一项再次设置为 null。所以例如第一轮这就是数组的样子

arr[0][0] = answer 1
arr[0][1] = null
arr[0][2] = null
arr[0][3] = null

第二轮数组看起来像

arr[0][0] = null
arr[0][1] = answer 2
arr[0][2] = null
arr[0][3] = null

谁能帮我解决这个问题!!

谢谢

【问题讨论】:

    标签: asp.net jagged-arrays


    【解决方案1】:

    我的方法是创建一个字符串数组的哈希集,然后随意填充,最后转换 ToArray()

    例如

    HashSet<string[]> data = new HashSet<string[]>();
    
    data.Add(new string[] { "mode", "create" });
    data.Add(new string[] { "title", this.TextBoxCreateTitle.Text });
    
    data.ToArray();      // our jagged array
    

    【讨论】:

      【解决方案2】:

      什么是索引?您似乎没有增加它,并且每次通过您的 foreach 时,您都在创建一个新的并将其转储到同一个索引中。基本上每次都重写。

      您可能会发现使用 List 来完成这个锯齿状数组有更多用处。这将使添加/删除变得更容易一些,并且可能有助于枚举。

      【讨论】:

        【解决方案3】:

        您需要一个嵌套循环,因为您每次都在创建一个全新的数组并将旧数组吹走。

        //souround with a loop that increments index whenever you want to create a new group of questions
            answersJArray[index] = new string[noOfAnswersInQuestion];
            foreach (DataRowView answer in AnswersInQuestion)
            {
        
                answersJArray[index][j] = answer["ChoiceText"].ToString();
                j++;
            }
        

        【讨论】:

        • 哇,我认为 Spencer 的报复对我投了反对票,因为他不喜欢我指出他的错误的评论。然后他尴尬地删除了他的帖子。猜猜他拿着球回家了:)
        • +1 来否定你不应该投的反对票 :)。一直发生在我身上。
        【解决方案4】:

        每次都会调用您的构造函数(因此第一项设置为 null)。将您的字符串数组构造函数放在您的 for-each 循环之外(可能在它自己的循环中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-13
          • 1970-01-01
          • 1970-01-01
          • 2014-04-21
          • 1970-01-01
          相关资源
          最近更新 更多