# 중== Equals 접근 방식과의 차이점
3590 단어 equals
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Person
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
public Person(string name)
{
this.name = name;
}
}
class program
{
static void Main(string[] args)
{
string a = new string(new char[] { ""h"", ""e"", ""l"", ""l"", ""o"" });
string b = new string(new char[] { ""h"", ""e"", ""l"", ""l"", ""o"" });
Console.WriteLine(a == b);
Console.WriteLine(a.Equals(b));
object g = a;
object h = b;
Console.WriteLine(g == h);
Console.WriteLine(g.Equals(h));
Person p1 = new Person("jia");
Person p2 = new Person("jia");
Console.WriteLine(p1 == p2);
Console.WriteLine(p1.Equals(p2));
Person p3 = new Person("jia");
Person p4 = p3;
Console.WriteLine(p3 == p4);
Console.WriteLine(p3.Equals(p4));
Console.ReadLine();
}
}
}
출력 결과:true,true,false,true,false,false,true,true.요약은 다음과 같습니다.
1. 값 유형에 대해 ==와 equals 등가는 모두 정보를 저장하기 위해 노력하는 내용이다.2. 인용 유형에 대해 ==힘겨운 것은 인용 유형이 창고에 있는 주소이고 equals 방법은 인용 유형이 트레이드 더미에 저장된 정보의 내용을 예로 들 수 있다.3. string류에 대해 특별히 처벌을 처리해야 한다. 이것은 내부에서 이미 처벌을 처리한 equals 방법과 ==의 유형이기 때문에 =와 equals 등가는 모두 정보를 저장하기 위해 노력하는 내용이다.4. 일부 사용자 정의 클래스에 대해 우리는 equals 방법을 다시 불러와야 한다. 그렇지 않으면 이것은 기본 클래스의 equals 방법(기본 클래스는 Equals 방법을 다시 불러오지 않는다. 예를 들어 Object 클래스의 Equals 방법이다)이고 그들의 노력도 주소이다. 트랜잭션 더미에 저장된 정보의 내용을 인용하는 것이 아니다.
그러므로 우리는 다음과 같은 출력을 이해하기 어렵지 않다.
Person p1 = new Person("jia");
Person p2 = new Person("jia");
Console.WriteLine(p1 == p2);// False
Console.WriteLine(p1.Equals(p2));// False
5.string에 대해 우리는 상수 문자열과 문자열 변수의 차이를 과장해야 한다. 예를 보십시오.
//
string x = "should it matter"; // ,
string y = "should it matter";
object c = x;
object d = y;
Console.WriteLine(c == d);// True
Console.WriteLine(c.Equals(d));// True
//
string a = new string(new char[] { ""h"", ""e"", ""l"", ""l"", ""o"" });// ,
string b = new string(new char[] { ""h"", ""e"", ""l"", ""l"", ""o"" });
object g = a;
object h = b;
Console.WriteLine(g == h);// False
Console.WriteLine(g.Equals(h));// True
그들이 파견한 주소의 형식은 다르다.string x = "should it matter"초기 값이 상수이기 때문에 그 주소는 트랜잭션 더미의 정적 저장 구역, 즉 이른바 상수 탱크에 분배되고 건물주의string a = new string(new char[] {"h", "e", "l", "l", "o"}이것은 트랜잭션 더미에 동적 분배된 주소와 다르다. http://www.byywee.com/page/M0/S706/706092.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Secrets of equals() - Part 2A Point object should only compare equal to a ColoredPoint object if the color field contains a default value. Two objec...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.