【发布时间】:2021-05-23 09:00:21
【问题描述】:
开始从 JS 和 PHP 进入 C#。我已经习惯了对数据类型的严格使用,我正在努力弄清楚如何声明不同数据类型的多维关联数组。
例如在 PHP 中可能会做这样的事情
$roomDiscount["apartment"][0]["minDaysOfStay"] = 10;
$roomDiscount["apartment"][0]["discount"] = 0.3;
$roomDiscount["apartment"][1]["minDaysOfStay"] = 15;
$roomDiscount["apartment"][1]["discount"] = 0.35;
$roomDiscount["apartment"][2]["minDaysOfStay"] = 16;
$roomDiscount["apartment"][2]["discount"] = 0.5;
$roomDiscount["presidential suite"][0]["minDaysOfStay"] = 10;
$roomDiscount["presidential suite"][0]["discount"] = 0.1;
$roomDiscount["presidential suite"][1]["minDaysOfStay"] = 15;
$roomDiscount["presidential suite"][1]["discount"] = 0.15;
$roomDiscount["presidential suite"][2]["minDaysOfStay"] = 16;
$roomDiscount["presidential suite"][2]["discount"] = 0.2;
到目前为止,我一直在努力使用字典
private static void SkiTripWithDictionariesArrays()
{
int daysOfStay = int.Parse(Console.ReadLine());
string typeOfAccomodation = Console.ReadLine().ToLower().Trim();
string review = Console.ReadLine().ToLower().Trim();
Dictionary<string, double> roomPrices = new Dictionary<string, double>();
Dictionary<string, object> roomDiscounts = new Dictionary<string, object>(); // <---- thats the bugger
Dictionary<string, double> reviewAdjustment = new Dictionary<string, double>();
//populate room prices
roomPrices.Add("room for one person", 18);
roomPrices.Add("apartment", 25);
roomPrices.Add("president apartment", 35);
}
【问题讨论】:
-
您的 PHP 代码将更类似于
Dictionary<string, List<Dictionary<string, double>>>,尽管定义与您要存储的数据匹配的类会更有意义。 -
你能告诉我索引的第一个数字代表什么吗?例如
$roomDiscount["presidential suite"][2]中的 2。 -
2本质上只是内部数组的自动索引,本质上我可以将minDaysOfStay的值放在那里并直接与用户输入进行比较
-
但它代表什么?为什么会有
$roomDiscount["presidential suite"][0]、$roomDiscount["presidential suite"][1]和$roomDiscount["presidential suite"][2]? -
因为否则如果我去
$roomDiscount["presidential suite"]["minDaysOfStay"] = 10;$roomDiscount["presidential suite"]["minDaysOfStay"] = 15;然后总统套房-> minDaysOfStay = 15;
标签: c# arrays multidimensional-array associative-array