1 回答

TA貢獻1796條經驗 獲得超4個贊
正如您所說,您在數組的值中有一個關聯數組1。
在 C# 中,您將在數組的值或外部字典的值中放置一個字典。更準確地說,如果我們事先知道外部數組的大小,我們可以這樣寫
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);
}
}
但是,在這種情況下,我們事先并不知道數組的大小,并且在 C# 中動態調整數組的大小會很痛苦,所以我們將使用一個其值本身就是字典的字典:
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);
}
}
請注意,您還可以使用d[k] = v. 如果鍵已經存在,d[k] = v將覆蓋其值,但d.Add(k, v)會引發異常,因此Add如果您知道鍵應該是唯一的,那么使用它會更安全。
為了更清晰的代碼,以一些稍微復雜的功能為代價,您可以擺脫使用DefaultDictionary. 您也很可能通過使用 LINQ 擺脫循環。它看起來很像帶有一些 C# 語法的 SQL,并且能夠操作 C# 列表、字典、數組等。您正在使用的 SQL 綁定甚至可能具有 LINQ 接口!
1 鍵不是整數的數組通常稱為關聯數組(它將值與鍵相關聯)。
- 1 回答
- 0 關注
- 167 瀏覽
添加回答
舉報