내보내기(0) 인쇄
모두 확장
이 문서는 수동으로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오.
번역
원본

Object 클래스

.Net Framework 클래스 계층 구조의 모든 클래스를 지원하며 파생 클래스에 하위 수준 서비스를 제공합니다. 또한 .NET Framework의 모든 클래스 중에서 기본 클래스이며 형식 계층 구조의 루트입니다.

System.Object
  모든 클래스, 구조체, 열거형 및 대리자

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

[ComVisibleAttribute(true)]
[ClassInterfaceAttribute(ClassInterfaceType.AutoDual)]
public class Object

Object 형식에서는 다음과 같은 멤버를 노출합니다.

  이름설명
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원Object Object 클래스의 새 인스턴스를 초기화합니다.
위쪽

  이름설명
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원Equals(Object)지정된 Object가 현재 Object와 같은지 여부를 확인합니다.
Public 메서드정적 멤버Windows Phone용 Silverlight에서 지원Xbox 360에서 지원Equals(Object, Object)지정한 Object 인스턴스가 동일한지 여부를 확인합니다.
Protected 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원Finalize가비지 수집에서 Object를 회수하기 전에 개체가 리소스를 해제하고 다른 정리 작업을 수행할 수 있게 합니다.
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원GetHashCode특정 형식에 대한 해시 함수 역할을 합니다.
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원GetType현재 인스턴스의 Type을 가져옵니다.
Protected 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원MemberwiseClone현재 Object의 단순 복사본을 만듭니다.
Public 메서드정적 멤버Windows Phone용 Silverlight에서 지원Xbox 360에서 지원ReferenceEquals지정한 개체 인스턴스가 동일한지 여부를 확인합니다.
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원ToString현재 개체를 나타내는 문자열을 반환합니다.
위쪽

상속은 암시적이므로 Object에서의 상속을 선언할 때 클래스가 필요하지 않습니다.

.NET Framework의 모든 클래스는 Object에서 파생되므로 Object 클래스에 정의된 메서드는 시스템의 모든 개체에서 사용할 수 있습니다. 파생 클래스에서 재정의할 수 있는 메서드는 다음과 같습니다.

  • Equals - 개체 간을 비교합니다.

  • Finalize - 개체가 자동으로 다시 회수되기 전에 정리 작업을 수행합니다.

  • GetHashCode - 해시 테이블을 사용할 수 있도록 개체의 값에 해당하는 숫자를 생성합니다.

  • ToString - 클래스의 인스턴스를 설명하는, 사람이 인식할 수 있는 텍스트 문자열을 만듭니다.

성능 고려 사항

모든 형식의 개체를 처리해야 하는 컬렉션과 같은 클래스를 설계하는 경우 Object 클래스의 인스턴스를 받는 클래스 멤버를 만들 수 있습니다. 그러나 형식을 boxing 및 unboxing하는 과정으로 인해 성능이 떨어집니다. 새 클래스에서 특정 값 형식을 자주 처리하는 경우에는 boxing에 의한 성능 저하를 최소화하기 위해 두 가지 방법 중 하나를 사용할 수 있습니다.

  • 한 가지 방법은 Object 형식을 받는 일반 메서드를 만들고, 클래스에서 자주 처리하는 각각의 값 형식을 받는 형식별 메서드 오버로드를 여러 개 만드는 것입니다. 호출 매개 변수 형식을 받는 형식별 메서드가 있으면 boxing이 발생하지 않고 형식별 메서드가 호출됩니다. 호출 매개 변수 형식과 일치하는 메서드 인수가 없으면 매개 변수가 boxing되고 일반 메서드가 호출됩니다.

  • 다른 방법은 사용자 클래스와 해당 제네릭 메서드를 설계하는 것입니다. 사용자가 사용자 클래스의 인스턴스를 만들고 제네릭 형식 인수를 지정하면 공용 언어 런타임에서는 폐쇄형 제네릭 형식을 만듭니다. 제네릭 메서드는 형식에 고유하며 호출 매개 변수를 boxing하지 않고 호출될 수 있습니다.

Object 형식을 받고 반환하는 범용 클래스를 개발해야 하는 경우도 있지만 형식별 클래스를 함께 제공하여 자주 사용되는 형식을 처리하면 성능을 높일 수 있습니다. 예를 들어 부울 값만 설정하고 가져오는 클래스를 제공하면 부울 값을 boxing 및 unboxing할 필요가 없습니다.

다음 예제에서는 Object 클래스에서 파생된 Point 형식을 정의하고 Object 클래스의 여러 가상 메서드를 재정의합니다. 또한 이 예제에서는 Object 클래스의 여러 정적 메서드와 인스턴스 메서드를 호출하는 방법을 보여 줍니다.

참고참고:

이 예제를 실행하려면 Demo 메서드 및 TextBlock 컨트롤을 사용하는 예제 빌드를 참조하십시오.


// The Point class is derived from System.Object.
class Point
{
    public int x, y;

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

    public override bool Equals(object obj)
    {
        // If this and obj do not refer to the same type, then they are not equal.
        if (obj.GetType() != this.GetType()) return false;

        // Return true if  x and y fields match.
        Point other = (Point)obj;
        return (this.x == other.x) && (this.y == other.y);
    }

    // Return the XOR of the x and y fields.
    public override int GetHashCode()
    {
        return x ^ y;
    }

    // Return the point's value as a string.
    public override string ToString()
    {
        return String.Format("({0}, {1})", x, y);
    }

    // Return a copy of this point object by making a simple field copy.
    public Point Copy()
    {
        return (Point)this.MemberwiseClone();
    }
}

public sealed class Example
{
    public static void Demo(System.Windows.Controls.TextBlock outputBlock)
    {
        // Construct a Point object.
        Point p1 = new Point(1, 2);

        // Make another Point object that is a copy of the first.
        Point p2 = p1.Copy();

        // Make another variable that references the first Point object.
        Point p3 = p1;

        // The line below displays false because
        // p1 and p2 refer to two different objects.
        outputBlock.Text += Object.ReferenceEquals(p1, p2).ToString() + "\n";

        // The line below displays true because p1 and p2
        // refer to two different objects that have the same value.
        outputBlock.Text += Object.Equals(p1, p2).ToString() + "\n";

        // The line below displays true because p1 and p3 refer to one object.
        outputBlock.Text += Object.ReferenceEquals(p1, p3).ToString() + "\n";

        // The line below displays: p1's value is: (1, 2)
        outputBlock.Text += String.Format("p1's value is: {0}", p1.ToString()) + "\n";
    }
}

// This code example produces the following output:
//
// False
// True
// True
// p1's value is: (1, 2)
//


Silverlight

5, 4, 3에서 지원

Windows Phone용 Silverlight

Windows Phone OS 7.1, Windows Phone OS 7.0에서 지원

XNA Framework

Xbox 360, Windows Phone OS 7.0에서 지원

Silverlight에서 지원되는 운영 체제 및 브라우저에 대한 자세한 내용은 지원되는 운영 체제 및 브라우저을 참조하십시오.

이 형식의 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인스턴스 멤버에서는 스레드로부터 안전하지 않을 수 있습니다.

커뮤니티 추가 항목

추가
Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2014 Microsoft