# 중== 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

좋은 웹페이지 즐겨찾기