[英]What is the C# equivalent of a Javascript array of key/value pairs
這在javascript中代表什么:
[["January", 10], ["February", 8], ["March", 4], ["April", 13], ["May", 17], ["June", 9]]
其次,什么是 C# 等價物?
數組數組?? 但是每個內部數組本質上都是一個鍵/值對,所以這是不對的。
如何在 C# 中生成這個 JS 對象?
如果它是地圖,那么 C# 中高效查找的等效項將是Dictionary<TKey, TValue>
:
var months = new Dictionary<string, int>()
{
{"January", 1}, {"February", 2}, {"March", 3},
{"April", 4}, {"May", 5}, {"June", 6}
};
現在,如果它是一個元組數組,C# 7 有原生元組支持:
var months = new[]
{
("January", 1), ("February", 2), ("March", 3),
("April", 4), ("May", 5), ("June", 6)
};
你甚至可以像這樣命名元組的成員:
var months = new (string Name, int Number)[]
{
("January", 1), ("February", 2), ("March", 3),
("April", 4), ("May", 5), ("June", 6)
};
Console.WriteLine(months[0].Name);
它的Dictionary
Syntax: Dictionary<TKey, TValue>
var myDictionary = new Dictionary<int, string>();
myDictionary.Add(10, "January");
myDictionary.Add(8, "February");
myDictionary.Add(4, "March");
myDictionary.Add(13, "April");
myDictionary.Add(17, "May");
你也可以有一個KeyValuePairs
List
var list = new List<KeyValuePair<string, int>>()
{
new KeyValuePair<string, int>("January", 10),
new KeyValuePair<string, int>("February", 8),
new KeyValuePair<string, int>("March", 4),
new KeyValuePair<string, int>("April", 13),
new KeyValuePair<string, int>("May", 17),
};
那么List<KeyValuePair<T1, T2>>
和Dictionary<T1, T2>
什么區別?
答案是 List 不強制 Key 的唯一性。
這意味着您可以使用List
和KeyValuePair
執行此操作。
//Record with same key
new KeyValuePair<string, int>("May", 17),
new KeyValuePair<string, int>("May", 17),
但是你不能用Dictionary
來做
myDictionary.Add(17, "May");
myDictionary.Add(17, "May"); //ERROR
[["January", 10], ["February", 8], ["March", 4], ["April", 13], ["May", 17], ["June", 9]]
這在javascript中代表什么:
那么[]
表示一個數組。 所以外部是一個數組。 由於每個數組元素也由[]
分隔,因此每個元素也是一個數組。
其次,什么是 C# 等價物?
那么務實,你不能分配值的話,這會導致編譯時錯誤。 如果您使用 Json.Net 之類的東西將其轉換為 ac# 對象,那么絕對最接近的事物(外部 -> 內部)將是鋸齒狀數組。
object[][]
通常鋸齒狀數組並不是那么有用。 在這種情況下,我的意見是將數組轉換為List<DateTime>
因為列表更容易使用,而且每個數組元素似乎都包含一個月和一天,作為 DateTime 對象更容易使用.
這在javascript中代表什么:
它可以是地圖:
let m = new Map([["February", 8], ["March", 4], ["April", 13]])
或者只是數組數組:
let a = [["February", 8], ["March", 4], ["April", 13]];
其次,什么是 C# 等價物?
它可以是Dictionary<string, int>
或數組數組
由於 C# 是一種強類型語言,因此不推薦使用當前形式表示這些數據,但您可以,就像 ErikPhillips 在下面的評論中所說的那樣,如下所示:
object[] array1 = { "February", 8 };
由於“外部”數組是字符串和整數兩種類型的數組,因此在類似於下面的 C# 代碼中創建每個月日數組元素的“模型”將是更傳統的強類型 C# 最佳實踐,因為 C# 數組更常見的是一種類型的數組,例如一個字符串數組或一個 int 數組,或者在下面的代碼中,傳統的強類型 C# 一個 MonthDayModel 數組:
public class TestClass {
public TestClass(){
MonthDayModel[] arr = new MonthDayModel[10];
arr[0] = new MonthDayModel() {
Month = "February",
Day = 8
};
arr[1] = new MonthDayModel() {
Month = "March",
Day = 4
};
//...
}
}
public class MonthDayModel {
public string Month { get; set; }
public int Day { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.