[英]C# multi-dimensional array, ArrayList, or hash table?
我正在試圖弄清楚如何構建一個多維“數組”:
用途如下:
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"]);
你確定創建一個包含數據的類/結構是不合適的嗎? 例如:
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());
更新 :第一個示例中用於設置array[0]
的語法是對象初始值設定項 ; 以下兩個片段大致相同:
var foo = new Person();
foo.FirstName = "John";
var bar = new Person() { FirstName = "John" };
所以是的,如果你願意的話,你可以調用list.Add(new Person() { ... })
。 在這種情況下,您還可以使用集合初始值設定項:
var john = new Person() { FirstName = "John" };
var joe = new Person() { FirstName = "Joe" };
var list = new List<Person>() { john, joe };
你可以簡單地使用這個:
Dictionary<int, Dictionary<string, string>>
像這樣使用它:
var dd = new Dictionary<int, Dictionary<string, string>>();
dd[5] = new Dictionary<string, string>();
dd[5]["a"] = "foo";
您還可以創建一個新類來簡化內部字典的創建:
class DDict { // optional: generic
private readonly Dictionary<int, Dictionary<string, string>> _Inner = new ...;
public Dictionary<string, string> this (int index) {
Dictionary<string, string> d;
if (!_Inner.TryGetValue(index, out d)) {
d = new Dictionary<string, string>();
_Inner.Add(index, d);
}
return d;
}
}
var dd = new DDict();
dd[5]["a"] = "hi";
如果第一個索引是順序的,你當然也可以只使用一個字典數組:
var dd = new Dictionary<string, string>[128];
此外,如果內部成員始終相同,我建議創建一個新類並在數組中訪問它:
class Dat {
string name;
string phone;
}
var list = new Dat[128]
// access:
list[5].name = "matt";
在這種情況下,您也可以使用List
或Dictionary<int, Dat>
而不是數組。
我不相信你可以用數組做這個,除非你有一個KeyValuePair <int,string>的數組,但我認為你真的想要一個Dictionary <int,string>。
var dic = new Dictionary<int,string>();
dic[0] = "zero";
dic[1] = "one";
dic[2] = "two";
foreach(KeyValuePair<int,string> kvp in dic)
{
Console.WriteLine(String.Format("Key: {0}, Value: {1}",kvp.Key,kvp.Value);
}
其實我只看到兩個維度。 第一個是行索引,第二個是列索引。 這聽起來像是一個DataTable 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.