【问题标题】:How can I create a 2 dimensional dynamic length array?如何创建二维动态长度数组?
【发布时间】:2011-10-07 02:06:27
【问题描述】:

我想创建一个二维数组,但不知道第一个维度的大小。

例如,当我创建一个数组时,我的行数未知。 每行代表一个帐户。 每行退出 4 列:ID、名称、用户、密码

我尝试使用锯齿状数组,但它不可能:

int[][] jaggedArray = new int[][3];

我还找了ArrayList,用类实现和一些关于泛型的知识。

我正在寻找一种可以轻松处理数据的解决方案:

  • 添加到列表、选择、输入元素
  • 在数据库查询中使用元素
  • 在其他函数中用作参数

因为我是 .NET (C#) 的新手,请为我提供代码解决方案,而不是通用(寻找)解决方案

【问题讨论】:

    标签: c# arrays dynamic arraylist


    【解决方案1】:

    IMO,由于“列”是固定的,请为此声明一个类:

    public class Account
    {
        public int ID {get;set;}
        public string Name {get;set;}
        public string User {get;set;}
        public string Password {get;set;} // you meant salted hash, right? ;p
    }
    

    现在有一个:

    List<Account> list = new List<Account>();
    

    这里有你需要的一切:

    添加到列表、选择、输入元素

    list.Add

    在数据库查询中使用元素 在其他函数中作为参数使用

    含糊不清,没有更多信息,但您可以传递 Account 或单个值,或整个列表。

    【讨论】:

    • 谢谢。我还有一个问题:如何恢复特定列表项的类成员值?
    • @user 你的意思是像list[0].Name
    • 我的情况有一点不同。行和列都是未知的。我怎样才能为2-D Arrays 获得相同的结果?
    • @barnes then...var arr = new YourChosenType[len1, len2];(可以是 int[,]string[,] 等) - 或使用类似 DataTable 的东西 - 并且要明确:这不是“细微的”差异
    • 谢谢 :) 。知道我的“次要”是“主要”,我很有礼貌;)。
    【解决方案2】:

    .NET 中不存在动态长度数组。请改用List&lt;&gt;

    当你实例化一个数组时,所有的数组边界都需要知道。可能让您感到困惑的是,对于锯齿状数组,这似乎有所不同,但事实并非如此:因为它是一个数组数组,所以当您实例化它时,它将是一个未实例化数组的数组(例如 null 引用)。然后,您需要再次分配每个数组以使用它们。

    【讨论】:

      【解决方案3】:

      只要我知道,我们就不能在不知道数组大小的情况下实例化数组。你为什么不尝试一个列表数组?像这样:

      List<int>[] a = new List<int>[yourDesireColumnNumber];
      

      使用 List,添加、选择、输入元素是微不足道的。如果要在其他函数中作为参数,只需定义类型即可。

      【讨论】:

      • 你的意思不是固定 int 数组的列表,而不是固定的 int 列表数组吗?
      • @Scrum 是对的 - 如果你选择这种方法(我不会;p)它会是 List&lt;int[]&gt;,而不是 List&lt;int&gt;[]
      • 您应该先尝试再判断。它是一个 List 的数组。顺便说一句,Marc 的方法很棒。 ;) 我从中学习。
      猜你喜欢
      • 1970-01-01
      • 2015-07-15
      • 1970-01-01
      • 2013-05-02
      • 2013-02-22
      • 2011-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多