Je ne cherche pas une comparaison de deux structures qui retourne bool, je me demande s'il y a un moyen d'obtenir quels champs de deux structures (la même structure, mais peut-être des valeurs différentes) sont différents. Fondamentalement, je veux une façon plus simple de faire ce qui suit:Comparer les valeurs de deux structures en C#
public class Diff
{
public String VarName;
public object Val1;
public object Val2;
public Diff(String varName, object val1, object val2)
{
VarName = varName;
Val1 = val1;
Val2 = val2;
}
public override string ToString()
{
return VarName + " differs with values " + Val1 + " and " + Val2;
}
}
public struct TestStruct
{
public int ValueOne;
public int ValueTwo;
public int ValueThree;
public List Compare(TestStruct inTestStruct)
{
List diffs = new List();
if (ValueOne != inTestStruct.ValueOne)
{
diffs.Add(new Diff("ValueOne", ValueOne, inTestStruct.ValueOne));
}
if (ValueTwo != inTestStruct.ValueTwo)
{
diffs.Add(new Diff("ValueTwo", ValueTwo, inTestStruct.ValueTwo));
}
if (ValueThree != inTestStruct.ValueThree)
{
diffs.Add(new Diff("ValueThree", ValueThree, inTestStruct.ValueThree));
}
return diffs;
}
}
public CompareStructsExample()
{
TestStruct t1 = new TestStruct();
t1.ValueOne = 1;
t1.ValueTwo = 8;
t1.ValueThree = 5;
TestStruct t2 = new TestStruct();
t2.ValueOne = 3;
t2.ValueTwo = 8;
t2.ValueThree = 7;
List diffs = t1.Compare(t2);
foreach (Diff d in diffs)
{
System.Console.WriteLine(d.ToString());
}
}
Je me demande s'il y a un moyen de le faire avec sérialisation de quelque sorte, ou si cela est le seul moyen de voir réellement quelles valeurs ont changé . Même s'il existe une meilleure façon d'implémenter la fonction de comparaison, je le prendrais aussi.
Vérifiez ma solution linq. C'est vraiment petit. – johnnycrash