다음을 통해 공유


System.Object 클래스

이 문서에서는 이 API에 대한 참조 설명서에 대한 추가 설명서를 제공합니다.

클래스는 Object 모든 .NET 클래스의 궁극적인 기본 클래스이며 형식 계층의 루트입니다.

.NET의 모든 클래스는 파생 Object되므로 클래스에 Object 정의된 모든 메서드는 시스템의 모든 개체에서 사용할 수 있습니다. 파생 클래스는 다음을 포함하여 이러한 메서드 중 일부를 재정의할 수 있고 재정의할 수 있습니다.

  • Equals: 개체 간의 비교를 지원합니다.
  • Finalize: 개체가 자동으로 회수되기 전에 클린up 작업을 수행합니다.
  • GetHashCode: 해시 테이블 사용을 지원하기 위해 개체 값에 해당하는 숫자를 생성합니다.
  • ToString: 클래스의 인스턴스를 설명하는 사람이 읽을 수 있는 텍스트 문자열을 만듭니다.

일반적으로 언어는 상속이 암시적이기 때문에 상속 Object 을 선언하는 클래스가 필요하지 않습니다.

성능 고려 사항

모든 형식의 개체를 처리해야 하는 컬렉션과 같은 클래스를 디자인하는 경우 클래스의 인스턴스를 허용하는 클래스 멤버를 Object 만들 수 있습니다. 그러나 형식을 boxing 및 unboxing하는 프로세스에는 성능 비용이 수반됩니다. 새 클래스가 특정 값 형식을 자주 처리하는 것을 알고 있는 경우 두 가지 전술 중 하나를 사용하여 boxing 비용을 최소화할 수 있습니다.

  • 형식을 Object 허용하는 일반 메서드와 클래스가 자주 처리할 것으로 예상되는 각 값 형식을 허용하는 형식별 메서드 오버로드 집합을 만듭니다. 호출 매개 변수 형식을 허용하는 형식별 메서드가 있는 경우 boxing이 발생하지 않고 형식별 메서드가 호출됩니다. 호출 매개 변수 형식과 일치하는 메서드 인수가 없으면 매개 변수가 boxed되고 일반 메서드가 호출됩니다.
  • 제네릭을 사용하도록 형식 및 해당 멤버를 디자인합니다. 공용 언어 런타임은 클래스의 인스턴스를 만들고 제네릭 형식 인수를 지정할 때 닫힌 제네릭 형식을 만듭니다. 제네릭 메서드는 형식별로 지정되며 호출 매개 변수를 boxing하지 않고 호출할 수 있습니다.

형식을 허용하고 반환 Object 하는 범용 클래스를 개발해야 하는 경우도 있지만 자주 사용되는 형식을 처리하는 형식별 클래스를 제공하여 성능을 향상시킬 수 있습니다. 예를 들어 부울 값을 설정하고 가져오는 것과 관련된 클래스를 제공하면 부울 값의 boxing 및 unboxing 비용이 제거됩니다.