C#의 효율적인 개체 속성 비교
이 문서에서는 C#에서 개체 속성을 비교하는 효율적인 방법을 살펴봅니다. 일반적인 과제는 동일한 유형의 두 개체가 동일한 속성 값을 가지고 있는지 확인하는 것입니다. LINQ 및 확장 방법을 활용하는 향상된 접근 방식을 살펴보겠습니다.
향상된 부동산 비교 방법
다음 C# 코드는 개체 속성을 비교하기 위한 세련된 솔루션을 제공합니다.
<code class="language-csharp">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; }</code>
이 방법은 몇 가지 주요 개선 사항을 제공합니다.
for
루프에 비해 잠재적으로 성능이 향상됩니다.int
, string
, bool
)인지 명시적으로 확인하여 복잡한 개체 속성을 처리할 때 발생할 수 있는 오류를 방지합니다. 이렇게 하면 재귀 문제가 방지됩니다.이 최적화된 접근 방식은 명확성과 사용 편의성을 유지하면서 개체 속성을 효율적이고 안정적으로 비교할 수 있도록 해줍니다.
위 내용은 C#에서 개체 속성의 동일성을 효율적으로 비교할 수 있는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!