C# 如何创建二维动态长度数组?

C# 如何创建二维动态长度数组?,c#,arrays,dynamic,arraylist,C#,Arrays,Dynamic,Arraylist,我想创建一个二维数组,而不知道第一个维度的大小 例如,在创建数组时,行数未知。 每行代表一个帐户。 每行退出4列:ID、名称、用户、密码 我尝试使用锯齿阵列,但不可能有: int[][] jaggedArray = new int[][3]; 我还查找了ArrayList、CLASE实现和一些泛型 我正在寻找一种解决方案,该解决方案可以方便地操作数据,如: 添加到列表、选择、输入元素 在数据库查询中使用元素 在其他函数中用作参数 由于我是.NET C的新手,请为我提供代码解决方案,而不是常规的

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

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

我尝试使用锯齿阵列,但不可能有:

int[][] jaggedArray = new int[][3];
我还查找了ArrayList、CLASE实现和一些泛型

我正在寻找一种解决方案,该解决方案可以方便地操作数据,如:

添加到列表、选择、输入元素 在数据库查询中使用元素 在其他函数中用作参数
由于我是.NET C的新手,请为我提供代码解决方案,而不是常规的查找解决方案。

在.NET中没有动态长度数组。使用列表代替


在实例化数组时,数组边界都需要知道。让您困惑的是,对于交错数组,这似乎有所不同,但事实并非如此:因为它是一个数组数组,当您实例化它时,它将是一个未实例化数组数组,例如空引用。然后,您需要再次分配这些数组中的每一个来使用它们。

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>();
这有你需要的一切:

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

列表、添加等

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


vague没有更多信息,但您可以传递Account或invidual值,也可以传递整个列表。

据我所知,我们无法在不知道数组大小的情况下实例化数组。你为什么不试试列表数组呢?像这样:

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

对于List、add、select,输入元素非常简单。如果您想在其他函数中将其作为参数,只需定义类型。

您不是指固定int数组的列表,而不是固定int数组的列表吗?@Scrum是正确的-如果您选择了这种方法,我不会;这将是一个列表,而不是一个列表[]你应该在判断之前先尝试一下。这是一个列表数组。顺便说一下,Marc方法很棒;我从中学到了很多,谢谢。我还有一个问题:如何恢复特定列表项的类成员值?@user您的意思是like list[0]。Name?我的案例有一个细微的区别。行和列都未知。如何才能在二维阵列上获得相同的结果?@barnes然后。。。var arr=new YourChosenType[len1,len2];可以是int[,],string[,]等-或者使用类似DataTable的东西-而且要明确的是:这不是一个微小的区别hanks:。我知道我的辅修是主修,所以我很有礼貌;。