C#定义维度的字典数组

C#定义维度的字典数组,c#,arrays,dictionary,custom-type,C#,Arrays,Dictionary,Custom Type,我正在尝试为我的项目定义自定义类型。我会尽力解释我想要达到的目标。我有n*m个包。每个包装有不同的成分(CO2、H2O、NO、CO等的质量)。我想在我的自定义类型中存储所有数据包的组成。 每个数据包的组成可以是这样的字典: Dictionary<string, double> 关键是所有这些字典都应该存储在某种nm数组中。所以我可以在一个地方合成所有nm数据包 显然,这个数组不能像double[,]或int[,]那样。。。因为内容将是字典,而不是int或double 知道如何将所有

我正在尝试为我的项目定义自定义类型。我会尽力解释我想要达到的目标。我有n*m个包。每个包装有不同的成分(CO2、H2O、NO、CO等的质量)。我想在我的自定义类型中存储所有数据包的组成。 每个数据包的组成可以是这样的字典:

Dictionary<string, double>
关键是所有这些字典都应该存储在某种nm数组中。所以我可以在一个地方合成所有nm数据包

显然,这个数组不能像double[,]或int[,]那样。。。因为内容将是字典,而不是
int
double

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

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

class Composition
{
    public string Name { get; set; }
    public double Value { get; set; }
}
现在将它们放入多维数组中:

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 };

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

class Composition
{
    public string Name { get; set; }
    public double Value { get; set; }
}
现在将它们放入多维数组中:

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 };

您当然可以使用
字典[,]
保存数据:

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;
var packets=新字典[2,3]
{
{new Dictionary(),new Dictionary(),new Dictionary(),},
{new Dictionary(),new Dictionary(),new Dictionary(),},
};
数据包[1,0][“CO2”]=2.6;
数据包[1,1][“CO2”]=2.4;
数据包[1,2][“CO2”]=2.9;

您当然可以使用
字典[,]
保存您的数据:

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;
var packets=新字典[2,3]
{
{new Dictionary(),new Dictionary(),new Dictionary(),},
{new Dictionary(),new Dictionary(),new Dictionary(),},
};
数据包[1,0][“CO2”]=2.6;
数据包[1,1][“CO2”]=2.4;
数据包[1,2][“CO2”]=2.9;

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

 public class Packet
 {
      public Dictionary<string, decimal> Compounds { get; }

      public Packet()
      {
           Compounds = new Dictionary<string, decimal>();
      }
 }
公共类数据包
{
公共字典复合词{get;}
公共数据包()
{
复合词=新词典();
}
}
你可以这样使用它

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);
List packets=newlist();
数据包=新数据包();
包装。化合物。添加(“CO2”,2.6);
包装。化合物。添加(“O2”,1.7);
packets.Add(packet);

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

 public class Packet
 {
      public Dictionary<string, decimal> Compounds { get; }

      public Packet()
      {
           Compounds = new Dictionary<string, decimal>();
      }
 }
公共类数据包
{
公共字典复合词{get;}
公共数据包()
{
复合词=新词典();
}
}
你可以这样使用它

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);
List packets=newlist();
数据包=新数据包();
包装。化合物。添加(“CO2”,2.6);
包装。化合物。添加(“O2”,1.7);
packets.Add(packet);

List?你能更详细地解释一下你在找什么吗?您打算如何使用此自定义类型?
字典
。除了
字符串
之外,您还可以使用
枚举
作为外部字典的键来描述不同的
组合类型
字典[,]有什么问题?二维数组不必是内置的值类型。似乎您应该为每个组合创建自己的类,并存储这些实例的列表。您能解释一下为什么使用
字典
以及您计划如何使用自定义类型吗?有很多类型的人来处理类似的事情。如果你能在解释上再深入一点的话,那真的会很有帮助?你能更详细地解释一下你在找什么吗?您打算如何使用此自定义类型?
字典
。除了
字符串
之外,您还可以使用
枚举
作为外部字典的键来描述不同的
组合类型
字典[,]有什么问题?二维数组不必是内置的值类型。似乎您应该为每个组合创建自己的类,并存储这些实例的列表。您能解释一下为什么使用
字典
以及您计划如何使用自定义类型吗?有很多类型的人来处理类似的事情。如果你能进一步解释一下,那会很有帮助的。