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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。