이 문서는 기계 번역을 이용하여 번역되었습니다. 문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

Object.Equals 메서드 (Object)

 

게시 날짜: 2016년 11월

지정한 개체가 현재 개체와 같은지 여부를 확인합니다.

네임스페이스:   System
어셈블리:  mscorlib(mscorlib.dll에 있음)

public virtual bool Equals(
	object obj
)

매개 변수

obj
Type: System.Object

현재 개체와 비교할 개체입니다.

반환 값

Type: System.Boolean

지정한 개체가 현재 개체와 같으면 true이고, 다르면 false입니다.

현재 인스턴스 간의 비교의 유형 및 obj 매개 변수는 현재 인스턴스 참조 형식 또는 값 형식 인지에 따라 달라 집니다.

  • 현재 인스턴스 참조 형식인 경우는 Equals(Object) 참조 일치에 대 한 테스트 메서드를 호출 하 여 Equals(Object) 를 호출 하는 것과 같습니다는 ReferenceEquals 메서드. 참조 같음 비교 되는 개체 변수가 같은 개체를 참조 하는지 의미 합니다. 다음 예제에서는 이러한 비교의 결과를 보여 줍니다. 정의 Person 클래스는 참조 형식, 즉 호출는 Person 클래스 생성자를 두 개의 새 인스턴스화하 Person 개체 person1aperson2, 동일한 값을 가진 합니다. 자동으로 할당 person1a 다른 개체 변수에 person1b합니다. 예제에서 출력으로 person1aperson1b 동일한 개체를 참조 하기 때문에 있습니다. 그러나 person1aperson2 동일한 값을 포함 하지만, 같지 않습니다.

    using System;
    
    // Define a reference type that does not override Equals.
    public class Person
    {
       private string personName;
    
       public Person(string name)
       {
          this.personName = name;
       }
    
       public override string ToString()
       {
          return this.personName;
       }
    }
    
    public class Example
    {
       public static void Main()
       {
          Person person1a = new Person("John");
          Person person1b = person1a;
          Person person2 = new Person(person1a.ToString());
    
          Console.WriteLine("Calling Equals:"); 
          Console.WriteLine("person1a and person1b: {0}", person1a.Equals(person1b));               
          Console.WriteLine("person1a and person2: {0}", person1a.Equals(person2));  
    
          Console.WriteLine("\nCasting to an Object and calling Equals:");
          Console.WriteLine("person1a and person1b: {0}", ((object) person1a).Equals((object) person1b));
          Console.WriteLine("person1a and person2: {0}", ((object) person1a).Equals((object) person2)); 
       }
    }
    // The example displays the following output:
    //       person1a and person1b: True
    //       person1a and person2: False
    //       
    //       Casting to an Object and calling Equals:
    //       person1a and person1b: True
    //       person1a and person2: False
    
  • 현재 인스턴스의 값 형식인 경우는 Equals(Object) 값 일치에 대 한 메서드 테스트 합니다. 값이 같은지 다음을 의미합니다.

    • 두 개체가 동일한 형식의 됩니다. 다음 예제와 같이 한 Byte 값 12 가진 개체를 같지 않습니다는 Int32 두 개체가 서로 다른 런타임 형식 때문에 12의 값을 가진 개체를 합니다.

      using System;
      
      public class Example
      {
         public static void Main()
         {
            byte value1 = 12;
            int value2 = 12;
      
            object object1 = value1;
            object object2 = value2;
      
            Console.WriteLine("{0} ({1}) = {2} ({3}): {4}",
                              object1, object1.GetType().Name,
                              object2, object2.GetType().Name,
                              object1.Equals(object2));
         }
      }
      // The example displays the following output:
      //        12 (Byte) = 12 (Int32): False
      
    • 두 개체의 public 및 private 필드의 값이 같은지 합니다. 다음 예제에서는 값이 같은지 테스트합니다. 정의 Person 구조, 즉 값 형식 및 호출은 Person 클래스 생성자를 두 개의 새 인스턴스화하 Person 개체 person1person2, 동일한 값을 가진 합니다. 서로 다른 개체에 두 개의 개체 변수를 참조 하지만 예제에서 결과 보여 지 듯이 person1person2 개인에 대 한 동일한 값이 없으므로 같은지 personName 필드입니다.

      using System;
      
      // Define a value type that does not override Equals.
      public struct Person
      {
         private string personName;
      
         public Person(string name)
         {
            this.personName = name;
         }
      
         public override string ToString()
         {
            return this.personName;
         }
      }
      
      public struct Example
      {
         public static void Main()
         {
            Person person1 = new Person("John");
            Person person2 = new Person("John");
      
            Console.WriteLine("Calling Equals:"); 
            Console.WriteLine(person1.Equals(person2)); 
      
            Console.WriteLine("\nCasting to an Object and calling Equals:");
            Console.WriteLine(((object) person1).Equals((object) person2));  
         }
      }
      // The example displays the following output:
      //       Calling Equals:
      //       True
      //       
      //       Casting to an Object and calling Equals:
      //       True
      

때문에 Object 클래스는.NET Framework의 모든 형식에 대 한 기본 클래스는 Object.Equals(Object) 메서드는 다른 모든 형식에 대 한 기본 같음 비교를 제공 합니다. 그러나 형식은 종종 재정의 Equals 값이 같은지를 구현 하려면 메서드. 자세한 내용은 상속자 참고 사항 섹션에 대 한 정보를 알아보고 호출자에 대 한 참조입니다.

호출 하는 경우는 Equals(Object) 클래스의 메서드 오버 로드는 Windows 런타임, 재정의 하지 않는 클래스에 대 한 기본 동작을 제공 Equals(Object)합니다. 이는 .NET Framework에서 Windows 런타임에 대해 제공하는 지원의 일부입니다(Windows 스토어 앱 및 Windows 런타임에 대한 .NET Framework 지원 참조). 에 있는 클래스는 Windows 런타임 상속 받지 않습니다 Object, 하 고 구현 하지는 Equals(Object)메서드. 그러나 하기로 표시 ToString, Equals(Object), 및 GetHashCode 메서드 C# 또는 Visual Basic 코드에서 사용 하 고.NET Framework에서는 이러한 방법에 대 한 기본 동작을 제공 하는 경우.

System_CAPS_note참고

Windows 런타임C# 또는 Visual Basic에서 작성 된 클래스에서 재정의할 수는 Equals(Object) 메서드 오버 로드 합니다.

파생된 클래스를 자주 재정의 Object.Equals(Object) 값이 같은지를 구현 하려면 메서드. 또한 형식에 추가 강력한 형식의 오버 로드를 자주 제공는 Equals 메서드를 구현 하 여 일반적으로 IEquatable<T> 인터페이스입니다. 호출 하는 경우는 Equals 같은지를 테스트 하는 메서드 현재 인스턴스 우선 있는지 여부를 알아야 할 Object.Equals 하 고 이해 하는 방법에 대 한 특정 호출은 Equals 방법은 해결 합니다. 그렇지 않으면을 수행할 수도 있습니다는 테스트에 의도 한 것과 다른 같은지 및 메서드가 예기치 않은 값을 반환할 수 있습니다.

다음 예제에서 이에 대해 설명합니다. 세 개의 인스턴스화하여 StringBuilder 개체와 동일한 문자열 고 다음 4 개의 호출 하 Equals 메서드. 첫 번째 메서드 호출 반환 true, 나머지 3 개 반환 false합니다.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      StringBuilder sb1 = new StringBuilder("building a string...");
      StringBuilder sb2 = new StringBuilder("building a string...");

      Console.WriteLine("sb1.Equals(sb2): {0}", sb1.Equals(sb2));
      Console.WriteLine("((Object) sb1).Equals(sb2): {0}", 
                        ((Object) sb1).Equals(sb2));
      Console.WriteLine("Object.Equals(sb1, sb2): {0}",
                        Object.Equals(sb1, sb2));      

      Object sb3 = new StringBuilder("building a string...");
      Console.WriteLine("\nsb3.Equals(sb2): {0}", sb3.Equals(sb2));                              
   }
}
// The example displays the following output:
//       sb1.Equals(sb2): True
//       ((Object) sb1).Equals(sb2): False
//       Object.Equals(sb1, sb2): False
//
//       sb3.Equals(sb2): False

강력한 형식의 첫 번째 경우 StringBuilder.Equals(StringBuilder) 어떤 값이 같은지 테스트, 메서드 오버 로드를 호출 됩니다. 두에 할당 된 문자열 이므로 StringBuilder 메서드 반환 개체가 서로 같은지, true합니다. 그러나 StringBuilder 재정의 하지 않는 Object.Equals(Object)합니다. 이 인해 때는 StringBuilder 개체 캐스팅 됩니다는 Object때는 StringBuilder 인스턴스가 형식의 변수에 할당 됩니다 Object, 및 시기는 Object.Equals(Object, Object) 두 메서드에 전달 됩니다 StringBuilder 개체, 기본 Object.Equals(Object) 메서드를 호출 합니다. 때문에 StringBuilder 참조 형식인 두 전달 같습니다 StringBuilder 개체는 ReferenceEquals 메서드. 있지만 모든 세 StringBuilder 동일한 문자열을 포함 하는 개체, 세 가지 개체를 참조 합니다. 따라서 이러한 세 개의 메서드 호출 반환 false합니다.

호출 하 여 현재 개체를 참조 일치에 대 한 다른 개체를 비교할 수 있습니다는 ReferenceEquals 메서드. Visual Basic에서 사용할 수도 있습니다는 is 키워드 (예를 들어 If Me Is otherObject Then ...).

해당 형식에 정의 된 기능을 상속 고유한 형식을 정의 하는 경우는 Equals 기본 형식의 메서드. 다음 표에서의 기본 구현에서 Equals 주요 범주는.NET Framework의 형식에 대 한 메서드.

형식 범주

로 정의 된 같음

주석

직접 파생 된 클래스Object

Object.Equals(Object)

참조 같음; 호출에 해당 Object.ReferenceEquals합니다.

구조체

ValueType.Equals

값이 같은지 확인 합니다. 직접 바이트 단위로 비교 또는 리플렉션을 사용 하 여 필드 별로 비교 합니다.

열거형

Enum.Equals

값은 열거형 형식이 및 기본값이 있어야 합니다.

delegate

MulticastDelegate.Equals

대리자에는 동일한 호출 목록 사용 하 여 같은 형식을 이어야 합니다.

interface

Object.Equals(Object)

참조 일치 합니다.

값 형식에 대 한 재정의 항상 해야 Equals, 리플렉션을 사용 하는 같음에 대 한 테스트 성능 저하를 제공 하기 때문입니다. 기본 구현을 재정의할 수도 있습니다 Equals 참조 일치 대신 값이 같은지를 테스트 하 고 값이 같은지의 정확한 의미를 정의 하는 참조 형식에 대 한 합니다. 구현 Equals 반환 true 동일한 인스턴스에 없는 경우에 두 개체도 동일한 값입니다. 해당 형식의 구현자 결정 하는 개체의 값을 구성 하는 항목 이지만 일반적으로 일부 또는 모든 데이터 개체의 인스턴스 변수에 저장 합니다. 예를 들어 값은 String ; 문자열의 문자를 기반으로 하는 개체는 String.Equals(Object) 메서드 재정의 Object.Equals(Object) 반환 하는 메서드 true 인스턴스 동일한 순서로 동일한 문자를 포함 하는 두 개의 문자열에 대 한 합니다.

재정의 하는 방법을 보여 주는 다음 예제는 Object.Equals(Object) 값이 같은지를 테스트 하는 메서드. 재정의 Equals 에 대 한 메서드는 Person 클래스입니다. 경우 Person , 동등 여부의 기본 클래스 구현을 허용 두 Person 개체는 단일 개체를 참조 하는 경우에 동일한 것입니다. 그러나이 경우에에서 두 개의 Person 개체는 모두 같은 경우에 대해 같은 값의 Person.Id 속성입니다.

public class Person
{
   private string idNumber;
   private string personName;

   public Person(string name, string id)
   {
      this.personName = name;
      this.idNumber = id;
   }

   public override bool Equals(Object obj)
   {
      Person personObj = obj as Person; 
      if (personObj == null)
         return false;
      else
         return idNumber.Equals(personObj.idNumber);
   }

   public override int GetHashCode()
   {
      return this.idNumber.GetHashCode(); 
   }
}

public class Example
{
   public static void Main()
   {
      Person p1 = new Person("John", "63412895");
      Person p2 = new Person("Jack", "63412895");
      Console.WriteLine(p1.Equals(p2));
      Console.WriteLine(Object.Equals(p1, p2));
   }
}
// The example displays the following output:
//       True
//       True

재정의 하는 것 외에도 Equals를 구현할 수 있습니다는 IEquatable<T> 같음에 대 한 강력한 형식의 테스트를 제공 하는 인터페이스입니다.

다음 문은 모든의 구현에 대해 충족 해야 합니다.는 Equals(Object) 메서드. 목록에서 x, y, 및 z 되지 않는 개체 참조 나타냅니다 null합니다.

  • x.Equals(x)반환 true, 부동 소수점 형식을 포함 하는 경우를 제외 하 고 있습니다. ISO/IEC/IEEE 60559:2011, 정보 기술-마이크로프로세서 시스템-부동 소수점 연산을 참조 하십시오.

  • x.Equals(y)과 동일한 값을 반환 y.Equals(x)합니다.

  • x.Equals(y)반환 true 모두 xyNaN합니다.

  • 경우 (x.Equals(y) && y.Equals(z)) 반환 true, 다음 x.Equals(z) 반환 true합니다.

  • 에 대 한 연속 호출은 x.Equals(y) 같은 값으로 하 여 참조 하는 개체가 반환 xy 수정 되지 않습니다.

  • x.Equals(null)false를 반환하는 경우

구현 Equals ; 예외가 발생 하지 않아야 항상 값 반환 해야 합니다. 예를 들어 경우 objnull, Equals 메서드를 반환 하도록 false throw 하는 대신는 ArgumentNullException합니다.

재정의 하는 경우 다음이 지침에 따라 Equals(Object):

  • 구현 하는 형식은 IComparable 재정의 해야 Equals(Object)합니다.

  • 재정의 하는 형식은 Equals(Object) 재정의 해야 GetHashCode, 그렇지 않으면 해시 테이블을 올바르게 작동 하지 않을 수 있습니다.

  • 구현할 때 고려해 야는 IEquatable<T> 강력 하 게 지원 하기 위해 인터페이스 형식의 같은지 테스트 합니다. 프로그램 IEquatable<T>.Equals 구현와 일치 하는 결과 반환 해야 Equals합니다.

  • 프로그래밍 언어에서 연산자 오버 로드 하 고 지정된 된 형식에 대 한 같음 연산자를 오버 로드, 재정의 해야 하는 경우는 Equals(Object) 같음 연산자와 동일한 결과 반환 하는 메서드. 이렇게 하면 사용 하는 클래스 라이브러리 코드가 Equals (예: ArrayListHashtable) 응용 프로그램 코드에서 같음 연산자를 사용 하는 방식과 일치 하는 방식으로 동작 합니다.

재정의에 다음과 같은 지침이 적용 Equals(Object) 참조 형식에 대 한:

  • 재정의 하는 것이 좋습니다. Equals 형식의 의미가 일부 값을 나타내는 경우.

  • 재정의 한 경우에 대부분의 참조 형식은 같음 연산자를 재정의 하지 해야 Equals합니다. 그러나를 복잡 한 숫자 형식 처럼 값 의미를 갖는 참조 형식이 구현 하는 경우 같음 연산자를 재정의 해야 합니다.

  • 재정의 하지 않아야 함 Equals 변경 가능한 참조 형식에 있습니다. 재정의 하기 때문에 이것이 Equals 도 재정의 하는 필요는 GetHashCode 메서드, 이전 섹션에서 설명한 대로 합니다. 즉, 해시 테이블 개체를 손실 될 수 있습니다의 수명 동안 변경 가능한 참조 형식의 인스턴스로의 해시 코드를 변경할 수 있습니다.

재정의에 다음과 같은 지침이 적용 Equals(Object) 값 형식을 사용 합니다.

  • 하나 이상의 필드를 포함 하는 값 형식을 정의 하는 경우 해당 값은 참조 형식, 재정의 해야 하는 Equals(Object)합니다. Equals(Object) 구현에서 제공 ValueType 갖는 값 형식에 대 한 바이트 단위 비교를 수행 합니다. 필드는 모든 값 형식은 있지만 리플렉션을 사용 하 여 해당 필드 참조 형식을 포함 하는 값 형식의 필드 별로 비교를 수행 합니다.

  • 재정의 하는 경우 Equals 개발 언어 연산자 오버 로드를 지원 하 고, 같음 연산자를 오버 로드 해야 합니다.

  • 구현 해야는 IEquatable<T> 인터페이스입니다. 강력한 형식의 호출 IEquatable<T>.Equals boxing을 방지 하는 메서드는 obj 인수입니다.

다음 예제와 Point 재정의 하는 클래스는 Equals 값이 같은지를 제공 하는 메서드 및 Point3D 클래스에서 파생 된 Point합니다. 때문에 Point 재정의 Object.Equals(Object) 값이 같은지를 테스트 하는 Object.Equals(Object) 메서드가 호출 되지 않습니다. 그러나 Point3D.Equals 호출 Point.Equals 때문에 Point 구현 Object.Equals(Object) 값이 같은지를 제공 하는 방식에서입니다.

using System;

class Point
{
   protected int x, y;

   public Point() : this(0, 0) 
   { }

   public Point(int x, int y) 
   {
      this.x = x;
      this.y = y;
   }

   public override bool Equals(Object obj) 
   {
      //Check for null and compare run-time types.
      if ((obj == null) || ! this.GetType().Equals(obj.GetType())) {
         return false;
      }
      else { 
         Point p = (Point) obj; 
         return (x == p.x) && (y == p.y);
      }   
   }

   public override int GetHashCode() 
   {
      return (x << 2) ^ y;
   }

    public override string ToString()
    {
        return String.Format("Point({0}, {1})", x, y);
    }
}

sealed class Point3D: Point 
{
   int z;

   public Point3D(int x, int y, int z) : base(x, y) 
   {
      this.z = z; 
   }

   public override bool Equals(Object obj) 
   {
      Point3D pt3 = obj as Point3D;
      if (pt3 == null)
         return false;
      else
         return base.Equals((Point)obj) && z == pt3.z;
   }

   public override int GetHashCode() 
   {
      return (base.GetHashCode() << 2) ^ z;
   }

   public override String ToString() 
   {
        return String.Format("Point({0}, {1}, {2})", x, y, z);
    }
}

class Example 
{
  public static void Main() 
  {
     Point point2D = new Point(5, 5);
     Point3D point3Da = new Point3D(5, 5, 2);
     Point3D point3Db = new Point3D(5, 5, 2);
     Point3D point3Dc = new Point3D(5, 5, -1);

     Console.WriteLine("{0} = {1}: {2}", 
                       point2D, point3Da, point2D.Equals(point3Da));
     Console.WriteLine("{0} = {1}: {2}", 
                       point2D, point3Db, point2D.Equals(point3Db));        
     Console.WriteLine("{0} = {1}: {2}", 
                       point3Da, point3Db, point3Da.Equals(point3Db));
     Console.WriteLine("{0} = {1}: {2}", 
                       point3Da, point3Dc, point3Da.Equals(point3Dc));
  } 
}
// The example displays the following output:
//       Point(5, 5) = Point(5, 5, 2): False
//       Point(5, 5) = Point(5, 5, 2): False
//       Point(5, 5, 2) = Point(5, 5, 2): True
//       Point(5, 5, 2) = Point(5, 5, -1): False

The Point.Equals method checks to make sure that the obj argument is not null and that it references an instance of the same type as this object. If either check fails, the method returns false.

The Point.Equals method calls the M:System.Object.GetType method to determine whether the run-time types of the two objects are identical. If the method used a check of the form obj is Point in C# or TryCast(obj, Point) in Visual Basic, the check would return true in cases where obj is an instance of a derived class of Point, even though obj and the current instance are not of the same run-time type. Having verified that both objects are of the same type, the method casts obj to type Point and returns the result of comparing the instance fields of the two objects.

In Point3D.Equals, the inherited Point.Equals method, which overrides M:System.Object.Equals(System.Object), is invoked before anything else is done. Because Point3D is a sealed class (NotInheritable in Visual Basic), a check in the form obj is Point in C# or TryCast(obj, Point) in Visual Basic is adequate to ensure that obj is a Point3D object. If it is a Point3D object, it is cast to a Point object and passed to the base class implementation of M:System.Object.Equals(System.Object). Only when the inherited Point.Equals method returns true does the method compare the z instance fields introduced in the derived class.

다음 예제에서는 정의 Rectangle 내부적으로 두 개의 사각형을 구현 하는 클래스 Point 개체입니다. Rectangle 클래스도 재정의 Object.Equals(Object) 하기 위해 값이 같은지 확인 합니다.

using System;

class Rectangle 
{
   private Point a, b;

   public Rectangle(int upLeftX, int upLeftY, int downRightX, int downRightY) {
      this.a = new Point(upLeftX, upLeftY);
      this.b = new Point(downRightX, downRightY);
   }

   public override bool Equals(Object obj) {
      // Perform an equality check on two rectangles (Point object pairs).
      if (obj == null || GetType() != obj.GetType()) 
          return false;
      Rectangle r = (Rectangle)obj;
      return a.Equals(r.a) && b.Equals(r.b);
   }

   public override int GetHashCode() {
      return Tuple.Create(a, b).GetHashCode();
   }

    public override String ToString() 
    {
       return String.Format("Rectangle({0}, {1}, {2}, {3})",
                            a.x, a.y, b.x, b.y); 
    }
}

class Point 
{
  internal int x;
  internal int y;

  public Point(int X, int Y) {
     this.x = X;
     this.y = Y;
  }

  public override bool Equals (Object obj) {
     // Performs an equality check on two points (integer pairs).
     if (obj == null || GetType() != obj.GetType()) return false;
     Point p = (Point)obj;
     return (x == p.x) && (y == p.y);
  }

  public override int GetHashCode() {
     return Tuple.Create(x, y).GetHashCode();
  }
}

class Example 
{
   public static void Main() 
   {
      Rectangle r1 = new Rectangle(0, 0, 100, 200);
      Rectangle r2 = new Rectangle(0, 0, 100, 200);
      Rectangle r3 = new Rectangle(0, 0, 150, 200);

      Console.WriteLine("{0} = {1}: {2}", r1, r2, r1.Equals(r2));
      Console.WriteLine("{0} = {1}: {2}", r1, r3, r1.Equals(r3));
      Console.WriteLine("{0} = {1}: {2}", r2, r3, r2.Equals(r3));
   }
}
// The example displays the following output:
//    Rectangle(0, 0, 100, 200) = Rectangle(0, 0, 100, 200): True
//    Rectangle(0, 0, 100, 200) = Rectangle(0, 0, 150, 200): False
//    Rectangle(0, 0, 100, 200) = Rectangle(0, 0, 150, 200): False

C# 및 Visual Basic과 같은 일부 언어 연산자 오버 로드를 지원 합니다. 형식이 같음 연산자를 오버 하는 경우 재정의 해야는 Equals(Object) 메서드를 같은 기능을 제공 합니다. 작성 하 여 일반적으로 이렇게는 Equals(Object) 메서드 오버 로드 된 같음 연산자는 다음 예제 에서처럼 기준으로 합니다.

using System;

public struct Complex {
   public double re, im;

   public override bool Equals(Object obj) {
      return obj is Complex && this == (Complex)obj;
   }

   public override int GetHashCode() {
      return Tuple.Create(re, im).GetHashCode();
   }

   public static bool operator ==(Complex x, Complex y) {
      return x.re == y.re && x.im == y.im;
   }

   public static bool operator !=(Complex x, Complex y) {
      return !(x == y);
   }

    public override String ToString()
    {
       return String.Format("({0}, {1})", re, im);
    } 
}

class MyClass 
{
  public static void Main() 
  {
    Complex cmplx1, cmplx2;

    cmplx1.re = 4.0;
    cmplx1.im = 1.0;

    cmplx2.re = 2.0;
    cmplx2.im = 1.0;

    Console.WriteLine("{0} <> {1}: {2}", cmplx1, cmplx2, cmplx1 != cmplx2);        
    Console.WriteLine("{0} = {1}: {2}", cmplx1, cmplx2, cmplx1.Equals(cmplx2));        

    cmplx2.re = 4.0;

    Console.WriteLine("{0} = {1}: {2}", cmplx1, cmplx2, cmplx1 == cmplx2);        
    Console.WriteLine("{0} = {1}: {2}", cmplx1, cmplx2, cmplx1.Equals(cmplx2));          
  }
}
// The example displays the following output:
//       (4, 1) <> (2, 1): True
//       (4, 1) = (2, 1): False
//       (4, 1) = (4, 1): True
//       (4, 1) = (4, 1): True

Because Complex is a value type, it cannot be derived from. Therefore, the override to M:System.Object.Equals(System.Object) method need not call M:System.Object.GetType to determine the precise run-time type of each object, but can instead use the is operator in C# or the TypeOf operator in Visual Basic to check the type of the obj parameter.

유니버설 Windows 플랫폼
8 이후 사용 가능
.NET Framework
1.1 이후 사용 가능
이식 가능한 클래스 라이브러리
이식 가능한 .NET 플랫폼 에서 지원됨
Silverlight
2.0 이후 사용 가능
Windows Phone Silverlight
7.0 이후 사용 가능
Windows Phone
8.1 이후 사용 가능
맨 위로 이동
표시: