>  기사  >  백엔드 개발  >  C# 개체 비교

C# 개체 비교

PHPz
PHPz원래의
2024-09-03 15:03:501051검색

C# 개체 비교는 유사한 종류의 두 개체에 대한 대소문자별 상관 관계를 분석하고 한 개체가 다른 개체보다 정확하지 않거나 동등하지 않거나 더 두드러지지 않은지 여부를 보여주는 값을 반환합니다. C#에는 많은 관리자가 있으며 그 중 일부는 값을 확인하는 데 활용됩니다. 이것은 프로그래밍 시 매우 기본적인 심부름입니다. 최소한 두 가지 특성이 서로 어떻게 식별되는지 확인하는 것입니다.

구문:

Public int compare(object s, object p)

어디,

S와 p는 비교할 첫 번째와 두 번째 개체입니다.

객체 s와 p의 값을 모두 나타내는 정수 값을 반환합니다.

C#에서 개체를 비교하는 방법은 무엇입니까?

이제 C#에서 개체 비교가 작동하는 방식의 예를 살펴보겠습니다.

예시 #1

using System;
using System.Collections.Generic;
class Someone
{
public string Name { get; set; }
}
class Ex
{
static void Main()
{
var someone = new List<Someone> {
new Someone { Name = "Spandana Rao" } };
Console.WriteLine(
someone.Contains(
new Someone { Name = "Spandana Rao" }));
}
}

출력:

C# 개체 비교

위 프로그램에서 프로그램은 false를 출력합니다. 이를 사실로 만들려면 Equals 기술을 폐기하거나 IEquatable 인터페이스에서는 두 가지 예를 분석하는 방법에 대한 권한을 포기하고 CLR의 기본 상관 관계 시스템을 인정합니다. 귀하의 종류가 참조 유형(클래스)인 경우 캐릭터 밸런스를 얻게 되며 귀하의 종류가 가치 있는 종류(구조체)인 경우 존중 밸런스를 얻게 됩니다.

참조 유형의 두 가지 사례(예: 첫 번째 모델의 Person 유형)를 볼 때 CLR은 참조와 항목을 대조하여 참조가 유사한 기사를 강조하는지 확인합니다. 참조가 감독 스택의 유사한 항목에 초점을 맞추는 경우 두 참조 유형이 동일할 수 있습니다. 참조가 고유한 경우 해당 필드를 구별할 수 있는지 여부에 관계없이 그 시점에서 객체는 동일하지 않습니다.

C# 값 평등은 대체 주기이지만 이해하기가 훨씬 더 간단합니다. 가치 균일성은 가치 종류의 모든 발생 필드를 취하여 개별 요청의 두 번째 예의 경우 필드로 간주합니다. 나는 대부분의 디자이너가 모든 서신 확인에서 기대하는 방식으로 존중 균형이 작동한다고 생각합니다.

객체를 소환하는 참조 유형에 대해 병렬 형평성 관리자(==) 또는 Equals 기술을 활용할 때마다. 언급된 경우와 동일합니다. 인센티브 균형을 제공하려는 경우 가장 확실한 활동은 System.Object.Equals를 대체하고 이 기술을 활용하여 두 발생 필드에 대해 생각하는 것입니다. 이 방법은 유형이 안전하지 않습니다. Equals 전략은 Object 유형의 경합을 인정하므로 이 기술에 전달된 항목이 Person인지 확인할 수 없습니다.

이 인터페이스는 우리가 직면하고 있는 일종의 웰빙 문제를 해결하는 데 도움을 주기 위해 명시적으로 계획되었습니다. 분명히 알 수 있듯이 이 인터페이스를 사용하면 현재 Equals 전략을 특정하게 대체할 수 있습니다. 우리는 특별히 Equals 전략을 가지고 있기 때문에 두 번에 걸쳐 수행되는 모든 통신 검사는 유형이 보호되고 무효 안전합니다. Equals의 기본 대체 실행에서 as 캐스트를 활용하면 Person 또는 Invalid의 경우와 IEquatable 사용을 전달할 수 있습니다. 우리의 전략이 무효화되지 않도록 보장하는 가짜 반환과 같습니다.

GetHashCode 전략은 성격 형평성 검사의 기본 요소입니다. 해시 코드는 현재 예시의 조건을 나타내는 기본 가치입니다. 기본적으로 두 사례의 해시 코드가 유사하면 존중 측면에서 동일할 수 있습니다. 그러나 두 기사에 유사한 해시 코드가 없을 경우에는 가치 면에서 동등하지 않습니다. 이 기술을 사용하면 해시 코드가 조정되지 않는 경우 Equals를 호출하지 않음으로써 코드 고려 및 전시 지원이 가능해집니다. 항목 예시에 대한 해시 코드를 생성하는 적절하거나 가장 이상적인 접근 방식에 대해서는 하루 더 이야기하겠습니다. 여기서 우리가 하는 일은 두 개의 서로소 숫자(23과 37)를 가져와 이를 활용하여 발생 상태의 해시 코드가 마지막 필수 값에 표시되도록 제어하는 ​​것입니다. 다시 한 번 말씀드리지만, 이제는 사용자가 어떻게 작업하는지가 중요하지 않습니다. 중요한 것은 GetHashCode가 제공할 수 있는 전시 보상을 받을 수 있도록 일부 실행을 제공한다는 것입니다. 현재 몇 가지 혜택 대응 의미 체계를 적절하게 제공하는 클래스가 있습니다.

결론

그러므로 기본 Object이기 때문에 다음과 같이 결론을 내리고 싶습니다. Equals 기술은 가상으로 구분되어 Object에서 가져오는 모든 클래스에서 이를 대체할 수 있습니다. p1.Equals(p3)는 현재 참조가 아닌 이름과 나이를 보고 있으므로 결과가 어떻게 바뀌는지 확인하세요.

위 내용은 C# 개체 비교의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:C# URL 인코딩다음 기사:C# URL 인코딩