資訊
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

Object 類別

支援 .NET Framework 類別階層架構中的所有類別,提供衍生類別的低階服務。 這是 .NET Framework 中所有類別的超基底類別,是型別階層架構的根。

System.Object
  所有類別、結構、列舉和委派。

命名空間:  System
組件:  mscorlib (在 mscorlib.dll 中)

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

Object 類型會公開下列成員。

  名稱描述
公用方法受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援Object初始化 Object 類別的新執行個體。
回頁首

  名稱描述
公用方法受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援Equals(Object)判斷指定的物件是否等於目前物件。
公用方法靜態成員受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援Equals(Object, Object)判斷指定的物件執行個體是否視為相等。
受保護的方法受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援Finalize 允許物件在記憶體回收進行回收之前,嘗試釋放資源並執行其他清除作業。
公用方法受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援GetHashCode做為預設雜湊函式。
公用方法受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援GetType取得目前執行個體的 Type
受保護的方法受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援MemberwiseClone建立目前 Object 的淺層複本 (Shallow Copy)。
公用方法靜態成員受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援ReferenceEquals判斷指定的 Object 執行個體是否為相同的執行個體。
公用方法受 XNA Framework 支援受 可攜式類別庫 支援適用於 Windows 市集應用程式的 .NET支援ToString傳回表示目前物件的字串。
回頁首

語言通常不需要類別從 Object 宣告繼承,因為繼承是隱含的。

因為 .NET Framework 中的所有類別衍生自 Object,系統的所有物件中,都可以使用定義在 Object 類別中的每個方法。 衍生類別可以覆寫某些方法,包括:

  • Equals :支援物件之間的比較。

  • Finalize :在自動重新宣告物件之前執行清除作業。

  • GetHashCode :產生對應於物件值的數字,以支援雜湊表的使用。

  • ToString :製造人們可讀取的 (Human-Readable) 文字字串,描述類別的執行個體。

效能考量

如果您要設計必須處理任何物件型別的類別 (如集合),您可以建立可接受 Object 類別之執行個體的類別成員。 然而,型別的 Boxing 和 Unboxing 處理序會附帶效能成本。 如果您知道新的類別會經常處理特定的實值型別,您可以使用下列其中一個策略將 Boxing 成本最小化。

  • 建立一個可接受 Object 型別的一般方法,並建立一組型別特定的方法多載,這些方法多載會接受您預期類別將經常處理的每個實值型別。 如果會接受呼叫參數型別之型別特定的方法存在,就不會發生 Boxing 且會叫用型別特定的方法。 如果沒有符合呼叫參數型別的方法引數,就會將參數進行 Boxed 並叫用一般方法。

  • 設計您的型別及其成員以使用泛型。 當您建立類別的執行個體並指定泛型型別引數時,Common Language Runtime 會建立關閉的泛型型別。 泛型方法是型別特定的,且不需對呼叫參數進行 Boxing 即可叫用。

雖然有時必須開發會接收及傳回 Object 型別的一般用途類別,但也可以藉由提供型別特定的類別來處理常用型別,提高效能。 例如,提供設定及取得布林值的專屬類別,會免除 Boxing 及 Unboxing 布林值的成本。

下列範例會定義衍生自 Object 類別的 Point 型別,並會覆寫許多 Object 類別的虛擬方法。 此外,這個範例會顯示如何呼叫 Object 類別的許多靜態和執行個體方法。


using System;

// 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 App {
    static void Main() 
    {
        // 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.
        Console.WriteLine(Object.ReferenceEquals(p1, p2));

        // The line below displays true because p1 and p2 refer to two different objects that have the same value.
        Console.WriteLine(Object.Equals(p1, p2));

        // The line below displays true because p1 and p3 refer to one object.
        Console.WriteLine(Object.ReferenceEquals(p1, p3));

        // The line below displays: p1's value is: (1, 2)
        Console.WriteLine("p1's value is: {0}", p1.ToString());
    }
}

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


.NET Framework

支援版本:4.5.2、4.5.1、4.5、4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

支援版本:4、3.5 SP1

可攜式類別庫

支援版本:可攜式類別庫

適用於 Windows 市集應用程式的 .NET

支援版本:Windows 8

適用於 Windows Phone 應用程式的 .NET

支援版本:Windows Phone 8、Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (不支援伺服器核心角色), Windows Server 2008 R2 (SP1 (含) 以後版本支援伺服器核心角色,不支援 Itanium)

.NET Framework 並不支援各種平台的所有版本。如需支援版本的清單,請參閱.NET Framework 系統需求

這個類型的公用靜態 (在 Visual Basic 中為 Shared) 成員是執行緒安全。 執行個體成員並不保證是安全執行緒。

社群新增項目

顯示:
© 2014 Microsoft