Object類是所有類的基類.Net框架。它存在於係統命名空間。在 C# 中,.NET 基類庫(BCL)有一個language-specific別名,它是對象類,其完全限定名稱為System.Object。 C# 中的每個類都直接或間接派生自 Object 類。如果一個類沒有擴展任何其他類,那麽它是 Object 類的直接子類,如果擴展另一個類,那麽它是間接派生的。因此,Object 類方法可用於所有 C# 類。因此,Object 類充當任何 C# 程序中繼承層次結構的根。 Object 類的主要目的是為派生類提供低級服務。
C# 中有兩種類型,即 Reference types and Value types 。通過使用 System.ValueType 類,值類型隱式繼承對象類。 System.ValueType 類使用更適合值類型的實現來重寫對象類中的虛擬方法。在其他編程語言中,int、double、float 等內置類型不具有任何麵向對象的屬性。要模擬內置類型的麵向對象行為,必須將它們顯式包裝到對象中。但在 C# 中,我們不需要這種包裝,因為存在從 System.ValueType 繼承的值類型,而 System.ValueType 又進一步從 System.Object 繼承。因此,在 C# 中,值類型的工作方式也與引用類型類似。引用類型通過使用其他引用類型直接或間接繼承對象類。
上圖解釋:在這裏,您可以看到位於類型層次結構頂部的 Object 類。1級和2級是參考類型。類1是直接繼承Object類,而類2是使用類1間接繼承。Struct1是一個值類型,通過System.ValueType類型。
例子:
C#
// C# Program to demonstrate
// the Object class
using System;
using System.Text;
class Geeks {
// Main Method
static void Main(string[] args)
{
// taking object type
Object obj1 = new Object();
// taking integer
int i = 10;
// taking Type type and assigning
// the value as type of above
// defined types using GetType
// method
Type t1 = obj1.GetType();
Type t2 = i.GetType();
// Displaying result
Console.WriteLine("For Object obj1 = new Object();");
// BaseType is used to display
// the base class of current type
// it will return nothing as Object
// class is on top of hierarchy
Console.WriteLine(t1.BaseType);
// It will return the name class
Console.WriteLine(t1.Name);
// It will return the
// fully qualified name
Console.WriteLine(t1.FullName);
// It will return the Namespace
// By default Namespace is System
Console.WriteLine(t1.Namespace);
Console.WriteLine();
Console.WriteLine("For String str");
// BaseType is used to display
// the base class of current type
// it will return System.Object
// as Object class is on top
// of hierarchy
Console.WriteLine(t2.BaseType);
// It will return the name class
Console.WriteLine(t2.Name);
// It will return the
// fully qualified name
Console.WriteLine(t2.FullName);
// It will return the Namespace
// By default Namespace is System
Console.WriteLine(t2.Namespace);
}
}
輸出:
For Object obj1 = new Object(); Object System.Object System For String str System.ValueType Int32 System.Int32 System
Constructor
.object-table { border-collapse: 崩潰;寬度:100%; } .object-table td { 邊框:1px 實心#5fb962; text-align:左!重要;內邊距:8px; } .object-table th { 邊框:1px 實心#5fb962;內邊距:8px; } .object-table tr>th{ 背景顏色: #c6ebd9; vertical-align:中間; } .object-table tr:nth-child(奇數) { 背景顏色: #ffffff; }
構造函數 | 說明 |
---|---|
Object() | 初始化 Object 類的新實例。此構造函數由派生類中的構造函數調用,但也可用於直接創建 Object 類的實例。 |
Methods
C# Object 類中共有 8 個方法,如下所示:
方法 | 說明 |
---|---|
Equals(Object) | 確定指定對象是否等於當前對象。 |
Equals(Object, Object) | 確定指定的對象實例是否被視為相等。 |
Finalize() | 允許對象在被垃圾收集回收之前嘗試釋放資源並執行其他清理操作。 |
GetHashCode() | 用作默認的哈希函數。 |
GetType() | 獲取當前實例的類型。 |
MemberwiseClone() | 創建當前對象的淺拷貝。 |
ReferenceEquals(Object, Object) | 判斷指定的Object實例是否是同一個實例。 |
ToString() | 返回表示當前對象的字符串。 |
要點:
- C# 類不需要聲明從 Object 類的繼承,因為繼承是隱式的。
- Object 類中定義的每個方法在係統中的所有對象中都可用,就像係統中的所有類一樣。.NET框架都是從 Object 類派生的。
- 派生類可以並且確實重寫 Object 類的 Equals、Finalize、GetHashCode 和 ToString 方法。
- 對類型進行裝箱和拆箱的過程在內部會導致性能成本。使用type-specific類來處理頻繁使用的類型可以提高性能成本。
相關用法
- C# Object.GetHashCode()用法及代碼示例
- C# Object.GetTypeCode()用法及代碼示例
- C# Object.MemberwiseClone用法及代碼示例
- C# Object.ReferenceEquals()用法及代碼示例
- C# OrderedDictionary用法及代碼示例
- C# String Clone()用法及代碼示例
- C# String Compare()用法及代碼示例
- C# String CompareOrdinal()用法及代碼示例
- C# String CompareTo()用法及代碼示例
- C# String Concat()用法及代碼示例
- C# String Contains()用法及代碼示例
- C# String Copy()用法及代碼示例
- C# String CopyTo()用法及代碼示例
- C# String EndsWith()用法及代碼示例
- C# String Equals()用法及代碼示例
- C# String Format()用法及代碼示例
- C# String GetEnumerator()用法及代碼示例
- C# String IndexOf()用法及代碼示例
- C# String Insert()用法及代碼示例
- C# String IsInterned()用法及代碼示例
- C# String IsNormalized()用法及代碼示例
- C# String IsNullOrEmpty()用法及代碼示例
- C# String IsNullOrWhiteSpace()用法及代碼示例
- C# String Join()用法及代碼示例
- C# String LastIndexOf()用法及代碼示例
注:本文由純淨天空篩選整理自Anshul_Aggarwal大神的英文原創作品 C# | Object Class。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。