Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
C# 多维数组、数组列表还是哈希表?_C#_Arrays_Multidimensional Array_Arraylist_Hashtable - Fatal编程技术网

C# 多维数组、数组列表还是哈希表?

C# 多维数组、数组列表还是哈希表?,c#,arrays,multidimensional-array,arraylist,hashtable,C#,Arrays,Multidimensional Array,Arraylist,Hashtable,我试图找出如何构建多维“数组”,即: 柔性尺寸 使用两把钥匙 第一个键是int(灵活) 第二个键是字符串(有点受限) 其用途如下: console.writelen(array[0]["firstname"]); console.writelen(array[0]["lastname"]); console.writelen(array[0]["phone"]); console.writelen(array[1]["firstname"]); console.writelen(array

我试图找出如何构建多维“数组”,即:

  • 柔性尺寸
  • 使用两把钥匙
  • 第一个键是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"]);

我不相信你可以用数组来实现这一点,除非你有一个单一的KeyValuePair数组,但我认为你真的想要一本字典

var dic=newdictionary();
dic[0]=“零”;
dic[1]=“一”;
dic[2]=“两个”;
foreach(dic中的KeyValuePair kvp)
{
WriteLine(String.Format(“Key:{0},Value:{1}”,kvp.Key,kvp.Value);
}

您可以简单地使用:

Dictionary<int, Dictionary<string, string>>

在这种情况下,您也可以使用
列表
字典
,而不是数组。

您确定创建一个类/结构来包含数据更合适吗?例如:

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

    public string LastName
    {
        get;
        set;
    }

    public string Phone
    {
        get;
        set;
    }
}
然后您只需创建一个
Person
数组:

var array = new Person[1];
array[0] = new Person() { FirstName = "Joe", LastName = "Smith", Phone = "foo" };
或者,既然你说的是“灵活的尺寸”,也许你想要一份清单:

var list = new List<Person>();
list.Add(new Person());
因此,如果愿意,您可以调用
list.Add(new Person(){…})
。在这种情况下,您还可以使用集合初始值设定项:

var john = new Person() { FirstName = "John" };
var joe = new Person() { FirstName = "Joe" };
var list = new List<Person>() { john, joe };
var john=newperson(){FirstName=“john”};
var joe=newperson(){FirstName=“joe”};
var list=newlist(){john,joe};

实际上我只看到两个维度。第一个是行索引,第二个是列索引。对我来说这听起来像是一个索引。

哦,对不起,我没有学习2键部分。var list=new list();list.Add(new Person());如何添加值非常有趣?list.Add(new Person(){FirstName=“Joe”,LastName=“Smith”,Phone=“foo”});像这样?在本例中,在这种情况下,如何显示项目标签{name,phone}而不是“item:”干杯
class Dat {
    string name;
    string phone;
}
var list = new Dat[128]

// access:
list[5].name = "matt";
class Person
{
    public string FirstName
    {
        get;
        set;
    }

    public string LastName
    {
        get;
        set;
    }

    public string Phone
    {
        get;
        set;
    }
}
var array = new Person[1];
array[0] = new Person() { FirstName = "Joe", LastName = "Smith", Phone = "foo" };
var list = new List<Person>();
list.Add(new Person());
var foo = new Person();
foo.FirstName = "John";

var bar = new Person() { FirstName = "John" };
var john = new Person() { FirstName = "John" };
var joe = new Person() { FirstName = "Joe" };
var list = new List<Person>() { john, joe };