想知道如果我可以在这里获得一些帮助。我有一些创建2对数字的代码。我将它们与.except进行比较。我有的问题是,而不是像我的代码中显示的数字分配如何添加50对随机抛出对比较。将随机数添加到配对列表中进行比较
public FrmDieRoller()
{
InitializeComponent();
}
public class Pair
{
public int FirstDie { get; set; }
public int SecondDie { get; set; }
}
public class Pair2
{
public int ThirdDie { get; set; }
public int FourthDie { get; set; }
}
public static List<Pair> ConvertToPairs(int[,] dieValues)
{
var query = from int item in dieValues select item;
var p1Rolls = query.ToList();
List<Pair> pairs = new List<Pair>(p1Rolls.Count);
for (int i = 0; i <4 ; i += 2)
{
pairs.Add(new Pair() {FirstDie = p1Rolls[i], SecondDie =
p1Rolls[i+ 1]});
}
return pairs;
}
public static List<Pair2> ConvertToPairs2(int[,] dieValues1)
{
var query = from int item1 in dieValues1 select item1;
var p2Rolls = query.ToList();
List<Pair2> pairs1 = new List<Pair2>(p2Rolls.Count);
for (int j = 0; j < 4; j += 2)
{
pairs1.Add(new Pair2() {ThirdDie = p2Rolls[j], FourthDie =
p2Rolls[j + 1]});
}
return pairs1;
}
public void btnRoll_Click(object sender, EventArgs e)
{
int[,] dieValue1 = {{1,2},{3,4}};
int[,] dieValue2 = {{2,6},{5,1}};
var p1Rolls = ConvertToPairs(dieValue1);
var p2Rolls = ConvertToPairs(dieValue2);
foreach (var item in p1Rolls.Except(p2Rolls))
{
lstRollDifference.Items.Add(string.Format("Player one has [{0},
{1}] which Player two does not", item.FirstDie, item.SecondDie));
}
您的代码将无法正常工作。您不能在不覆盖'GetHashCode'和'Equals'的对象上调用'Except'。 – Enigmativity
如果您尝试使用此代码 - “int [,] dieValue1 = {{1,2},{3,4}}; int [,] dieValue2 = {{2,6},{5,1},{3,4}};' - 你会看到你仍然被告知''''''玩家有一个[3,4]两个不“”。 – Enigmativity
我很抱歉,我对c#仍然陌生,请您解释一下关于gethashcode的更多信息,除了 –