在字典中包含许多变量

时间:2018-08-10 09:38:14

标签: c# dictionary

我想在字典(名称)中存储描述一个对象(名称)的许多不同变量(int,double,字符串等),如下所示:

string ref = "BCB";
int voltage = 12;
double watts = 60;
double width = 12.5;
double height = 15.5;
double cost = 10.2;

我已经阅读了一些有关字典的内容,但是我不明白如何将这些变量存储在其中。

可以用这个变量写一个例子吗?

4 个答案:

答案 0 :(得分:1)

您不应该以预期的方式执行此操作(尽管可能是<string, object>。字典是设计成<key, value>对。 您需要做的是创建一个结构或一个类,以保存您的属性。

答案 1 :(得分:0)

您可以使用字符串和对象类型, 请注意,如果您希望使用数据,则需要管理转换逻辑。

Dictionary<string, object> dic = new Dictionary<string, object>();
        int voltage = 12;
        double watts = 60;
        double width = 12.5;
        double cost = 10.2;
        string name = "BCB";
        dic.Add("voltage", watts);
        dic.Add("watts", width);
        dic.Add("height", voltage);
        dic.Add("cost", cost);
        dic.Add("name", name);

答案 2 :(得分:0)

最好的方法-用它们做一个类。

一种丑陋但仍有效的方法:ValueTuples:

Dictionary<string, (string ref, int voltage, double watts, double width, double height, double cost> dict;

dict.Add("Name", ("Ref", 10, 1.0, 2.0, 3.0, 100.0));

答案 3 :(得分:0)

好吧,你可以使用     字典<动态字符串>  在C#4 / .NET 4中-但除此之外,您不能完全使用显示的代码来实现,因为没有类型可以隐式转换为int,string和double。 (您可以编写自己的类型,但必须分别列出每种类型。)

您可以使用Dictionary,但随后需要转换结果:

int a = (int) Storage.Get("age");
string b = (string) Storage.Get("name");
double c = (double) Storage.Get("bmi");

或者,您可以使Get方法通用:

int a = Storage.Get<int>("age");
// etc