Non sto cercando un confronto tra due strutture che restituiscono bool, mi chiedo se c'è un modo per ottenere quali campi di due strutture (la stessa struttura, ma forse valori diversi) sono diversi. Fondamentalmente voglio un modo più semplice per effettuare le seguenti operazioni:Confronta i valori di due strutture in 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());
}
}
Mi chiedo se c'è un modo per fare questo con la serializzazione di qualche tipo, o se questo è l'unico modo per vedere in realtà che i valori sono cambiati . Anche se c'è un modo migliore per implementare la funzione Confronta, lo prenderei anche io.
Controlla la mia soluzione linq. È davvero piccolo. – johnnycrash