首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有定义尺寸的字典的C#数组

具有定义尺寸的字典的C#数组
EN

Stack Overflow用户
提问于 2017-05-17 11:49:07
回答 3查看 524关注 0票数 0

我试图为我的项目定义一个自定义类型。我会尽力解释我想要达到的目标。我有很多包裹。每个包有不同的组成(质量的CO2,H2O,NO,CO,.)。我想在我的自定义类型中存储所有数据包的组合。每个包的组成可以是这样的字典:

代码语言:javascript
复制
Dictionary<string, double>

例如:

代码语言:javascript
复制
packetComposition["CO2"]  = 2.6;
packetComposition["O2"]  = 1.7;

关键是所有这些字典都应该存储在某种n_m数组中。因此,我可以将所有n_m数据包组合在一个地方。

很明显,这个数组不可能是双重的,或者是int,.因为内容将是字典,而不是intdouble

知道如何将所有这些字典存储在n*m维的自定义类型中吗?谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-17 12:02:00

当然,您可以使用Dictionary<string, double>[,]来保存数据:

代码语言:javascript
复制
var packets = new Dictionary<string, double>[2, 3]
{
    { new Dictionary<string, double>(), new Dictionary<string, double>(), new Dictionary<string, double>(), },
    { new Dictionary<string, double>(), new Dictionary<string, double>(), new Dictionary<string, double>(), },
};

packets[1, 0]["CO2"] = 2.6;
packets[1, 1]["CO2"] = 2.4;
packets[1, 2]["CO2"] = 2.9;
票数 2
EN

Stack Overflow用户

发布于 2017-05-17 12:02:44

您可以创建包含所有化合物的自己的数据包类型,例如

代码语言:javascript
复制
 public class Packet
 {
      public Dictionary<string, decimal> Compounds { get; }

      public Packet()
      {
           Compounds = new Dictionary<string, decimal>();
      }
 }

你可以这样用它

代码语言:javascript
复制
List<Packet> packets = new List<Packet>();

Packet packet = new Packet();
packet.Compounds.Add("CO2", 2.6);
packet.Compounds.Add("O2", 1.7);

packets.Add(packet);
票数 1
EN

Stack Overflow用户

发布于 2017-05-17 11:56:34

您应该为此创建自己的类。然后,您可以轻松地创建实例并将它们放入列表中:

代码语言:javascript
复制
class Composition
{
    public string Name { get; set; }
    public double Value { get; set; }
}

现在将它们放入多维数组中:

代码语言:javascript
复制
Composition[,] myInstances = new Composition[n,m];
myInstanes[0,0] = new Composition { Name = "CO2", Value = 2.6 };
myInstanes[0,1] = new Composition { Name = "O2", Value = 1.7 };
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44024022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档