当所有字典都具有相同的键值对(只有值不同)时,我正在寻找一种更干净的方式用C#(或替代方法)编写字典数组。
我需要创建3个电厂对象,并且所有3个对象的属性“ Dam”,“ Diversion”和“ First”都需要具有不同的值,并且稍后将在此属性中使用不同的值码。我在用C#编写代码方面还很陌生,所以当我寻找解决此问题的最佳方法时,我遇到了各种字典,并决定将其用于其中。到目前为止,我已经在Program类中创建了3个词典的数组,然后在Main方法中添加了所需的值。
static Dictionary<string, int>[] power_plant = new Dictionary<string, int>[]
{
new Dictionary<string, int>(),
new Dictionary<string, int>(),
new Dictionary<string, int>()
};
for (int i = 0; i < 3; i++)
{
if (i == 0)
{
power_plant[i].Add("Dam", 1);
power_plant[i].Add("Diversion", 0);
power_plant[i].Add("First", 1);
}
else if (i==1)
{
power_plant[i].Add("Dam", 1);
power_plant[i].Add("Diversion", 0);
power_plant[i].Add("First", 0);
}
else
{
power_plant[i].Add("Dam", 0);
power_plant[i].Add("Diversion", 1);
power_plant[i].Add("First", 0);
}
}
尽管代码可以正常工作,但我认为必须使用更好的方法来实现所需的功能,无论是使用字典还是使用完全不同的类型的更简洁的代码。但是,我没有所需的知识来考虑替代方案。
任何帮助将不胜感激。
答案 0 :(得分:2)
欢迎来到C#世界!我不确定您要实现什么目标,但是似乎您已经使工作复杂化了。检查一下:
我需要创建3个电厂对象,并且所有3个对象的属性“ Dam”,“ Diversion”和“ First”都必须具有不同的值
在这种情况下,创建一个PowerPlant类:
public class PowerPlant
{
public PowerPlant(int dam, int diversion, int first)
{
Dam = dam;
Diversion = diversion;
First = first;
}
public int Dam { get; }
public int Diversion { get; }
public int First { get; }
}
然后将其添加到列表中:
var PowerPlants = new List<PowerPlant>
{
new PowerPlant(1, 0, 1),
new PowerPlant(1, 0, 0),
new PowerPlant(0, 1, 0)
};
这对您有帮助吗?让我知道是否可以。
答案 1 :(得分:1)
我认为最好创建具有3个属性Dam,Diversion和First的PowerPlant类。
public class PowerPlant
{
public int Dam { get; set; }
public int Diversion { get; set; }
public int First { get; set; }
}
并创建对象列表
static List<PowerPlant> powerPlants = new List<PowerPlant>
{
new PowerPlant { Dam = 1, Diversion = 0, First = 1},
new PowerPlant { Dam = 1, Diversion = 0, First = 0},
new PowerPlant { Dam = 0, Diversion = 1, First = 0}
};
然后,您可以使用linq选择所需的数据。
您要如何处理数据?