1,NET类都派生于System.Object,没有指明继承情况下,编译器会自动假定,这个类派生于Object。实际上这个派生是间接的,首先派生于System.ValueType,System.ValueType派生于Object。
2,其重要性在于除了访问自己定义的方法和属性外,还可以访问Object定义公共或受保护的成员方法。
3,Object类的方法,
ToString() ,这个就不用多说了,实际上ToString在数据格式化方面还是有许多限制的,更专业的表示,可以实现IFormattable接口。
GetHashTable()方法,如果对象在散列表或者字典的数据结构中,可以使用这个方法确定该对象应放在结构的什么位置。
Equals()和ReferenceEquals()
Finalize()方法,Object类的Finalize方法实际是空的,会被垃圾回收器忽略,但因为垃圾回收器只负责托管对象的的管理,如果对象拥有未托管资源的引用,就必须要重写Finalize方法,在该对象被删除时,调用该重写Finalize方法以删除该引用。
GetType()方法。
MemberwiseClone()方法。该方法只是复制对象,返回一个浅表复制,它只复制类中所有值类型,如果类中内嵌引用,就只复制引用,而不复制引用的对象,该方法不能重写。
如下,MemberwiseClone只能在类的内部使用,或者子类中使用。因为这是个保护类型。这里只是类子,这样用的时候不是很多,集体情况具体分析。
class windowForm
{
public int Left;
public int Right;
public windowForm()
{
windowForm win = new windowForm(2, 2);
object obj = win.MemberwiseClone();
Console.WriteLine((obj as windowForm).Left);
}
public windowForm(int left, int right)
{
this.Left = left;
this.Right = right;
}
}
4, 见下例,结果是“yellow”;
Object.ToString()方法声明为虚类型,Colors枚举是一个派生于System.Enum的结构,System.Enum中已经实现ToString的重写
enum Colors { red,orange,yellow };
class Program
{
static void Main(string[] args)
{
Colors myColor = Colors.yellow;
string str = myColor.ToString();
}
}
5,在自己的类中重写Tostring方法
只需要加上override声明重载
就是这些了,C#学习笔记之object类,希望对大家有所帮助。