Effizienter Vergleich von Objekteigenschaften in C#
In diesem Artikel werden effiziente Methoden zum Vergleichen von Objekteigenschaften in C# untersucht. Eine häufige Herausforderung besteht darin, festzustellen, ob zwei Objekte desselben Typs identische Eigenschaftswerte haben. Wir werden einen verbesserten Ansatz untersuchen, der LINQ und Erweiterungsmethoden nutzt.
Erweiterte Eigenschaftsvergleichsmethode
Der folgende C#-Code bietet eine verfeinerte Lösung zum Vergleichen von Objekteigenschaften:
public static bool PublicInstancePropertiesEqual<T>(this T self, T to, params string[] ignore) where T : class { if (self != null && to != null) { var type = typeof(T); var ignoreList = new List<string>(ignore); var unequalProperties = from pi in type.GetProperties(BindingFlags.Public | BindingFlags.Instance) where !ignoreList.Contains(pi.Name) && pi.GetUnderlyingType().IsSimpleType() && pi.GetIndexParameters().Length == 0 let selfValue = type.GetProperty(pi.Name).GetValue(self, null) let toValue = type.GetProperty(pi.Name).GetValue(to, null) where selfValue != toValue && (selfValue == null || !selfValue.Equals(toValue)) select selfValue; return !unequalProperties.Any(); } return self == to; }
Diese Methode bietet mehrere wichtige Verbesserungen:
for
Schleifen.int
, string
, bool
), um potenzielle Fehler beim Umgang mit komplexen Objekteigenschaften zu verhindern. Dadurch werden Rekursionsprobleme vermieden.Dieser optimierte Ansatz gewährleistet einen effizienten und zuverlässigen Vergleich von Objekteigenschaften bei gleichzeitiger Beibehaltung der Übersichtlichkeit und Benutzerfreundlichkeit.
Das obige ist der detaillierte Inhalt vonWie kann ich Objekteigenschaften in C# effizient auf Gleichheit vergleichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!