1 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
正如您所說(shuō),您在數(shù)組的值中有一個(gè)關(guān)聯(lián)數(shù)組1。
在 C# 中,您將在數(shù)組的值或外部字典的值中放置一個(gè)字典。更準(zhǔn)確地說(shuō),如果我們事先知道外部數(shù)組的大小,我們可以這樣寫
var size = 42; // let's assume we know this somehow
var outer = new Dictionary<InnerKey, InnerValue>[size];
for (int i = 0; i < size; i++) {
for (key in some_source) {
var value = some_function(key);
if (outer[i] == null) {
outer[i] = new Dictionary<InnerKey, InnerValue>();
}
outer[i].Add(somekey, somevalue);
}
}
但是,在這種情況下,我們事先并不知道數(shù)組的大小,并且在 C# 中動(dòng)態(tài)調(diào)整數(shù)組的大小會(huì)很痛苦,所以我們將使用一個(gè)其值本身就是字典的字典:
var outer = new Dictionary<Int, Dictionary<InnerKey, InnerValue>>;
for (int i = 0; i < size; i++) {
for (key in some_source) {
var value = some_function(key);
if (!outer.ContainsKey(i)) {
outer.Add(i, new Dictionary<InnerKey, InnerValue>());
}
outer[i].Add(somekey, somevalue);
}
}
請(qǐng)注意,您還可以使用d[k] = v. 如果鍵已經(jīng)存在,d[k] = v將覆蓋其值,但d.Add(k, v)會(huì)引發(fā)異常,因此Add如果您知道鍵應(yīng)該是唯一的,那么使用它會(huì)更安全。
為了更清晰的代碼,以一些稍微復(fù)雜的功能為代價(jià),您可以擺脫使用DefaultDictionary. 您也很可能通過(guò)使用 LINQ 擺脫循環(huán)。它看起來(lái)很像帶有一些 C# 語(yǔ)法的 SQL,并且能夠操作 C# 列表、字典、數(shù)組等。您正在使用的 SQL 綁定甚至可能具有 LINQ 接口!
1 鍵不是整數(shù)的數(shù)組通常稱為關(guān)聯(lián)數(shù)組(它將值與鍵相關(guān)聯(lián))。
- 1 回答
- 0 關(guān)注
- 164 瀏覽
添加回答
舉報(bào)