C#多维数组,ArrayList或哈希表?

Dat*_*ase 5 c# arrays hashtable arraylist multidimensional-array

我正在试图弄清楚如何构建一个多维"数组",它是:

  • 灵活的尺寸
  • 使用2把钥匙
  • 第一个键是int(灵活)
  • 第二个键是字符串(种类有限)

用途如下:

console.writelen(array[0]["firstname"]);
console.writelen(array[0]["lastname"]);
console.writelen(array[0]["phone"]);

console.writelen(array[1]["firstname"]);
console.writelen(array[1]["lastname"]);
console.writelen(array[1]["phone"]);

.....
.....

console.writelen(array[x]["firstname"]);
console.writelen(array[x]["lastname"]);
console.writelen(array[x]["phone"]);
Run Code Online (Sandbox Code Playgroud)

Wil*_*den 11

你确定创建一个包含数据的类/结构是不合适的吗?例如:

class Person
{
    public string FirstName
    {
        get;
        set;
    }

    public string LastName
    {
        get;
        set;
    }

    public string Phone
    {
        get;
        set;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你只需要创建一个数组Person:

var array = new Person[1];
array[0] = new Person() { FirstName = "Joe", LastName = "Smith", Phone = "foo" };
Run Code Online (Sandbox Code Playgroud)

或者,既然你说"灵活的大小",也许你想要一个列表:

var list = new List<Person>();
list.Add(new Person());
Run Code Online (Sandbox Code Playgroud)

更新:第array[0]一个示例中用于设置的语法是对象初始值设定项 ; 以下两个片段大致相同:

var foo = new Person();
foo.FirstName = "John";

var bar = new Person() { FirstName = "John" };
Run Code Online (Sandbox Code Playgroud)

所以是的,list.Add(new Person() { ... })如果你愿意,你可以打电话.在这种情况下,您还可以使用集合初始值设定项:

var john = new Person() { FirstName = "John" };
var joe = new Person() { FirstName = "Joe" };
var list = new List<Person>() { john, joe };
Run Code Online (Sandbox Code Playgroud)