Note that there are some explanatory texts on larger screens.

plurals
  1. POCompare two structs' values in C#
    text
    copied!<p>I'm not looking for a comparison of two structs that returns bool, I am wondering if there is a way to get which fields of two structs (the same structure, but maybe different values) are different. Basically I want a simpler way to do the following:</p> <pre><code>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()); } } </code></pre> <p>I'm wondering if there is a way to do this with serialization of some sort, or if this is the only way to actually see which values have changed. Even if there is a better way to implement the Compare function, I would take that too.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload