zoukankan      html  css  js  c++  java
  • C#之System.Object

    一.前言

      System.Object在.Net中是所有类型的基类,任何类型都可以直接或间接地继承System.Object。没有指定基类的类型都默认继承System.Object。

    二.特性

      所有类型都继承于System.Object,所以所有类型都具有System.Object的特性。

    1.Object()

      System.Object类型的构造函数。在创建对象时,如果类型是Object,会直接调用。如果类型非Object类型,由派生类的构造函数自动调用。

    2.Equals()

      Equals(Object obj),虚方法,判断该对象与作为参数的对象是否相同,默认是对比引用是否相同。可以通过重写来实现不同方式的对比。

      Equals(Object objA,Object objB),静态方法。判断两个对象是否为相同的引用,是就返回true。如果都为null,也返回true。如果不是相同的引用,它会默认调用objA.Equals(objB)的方法。

    3.ReferenceEquals()

      ReferenceEquals(Object objA,Object objB),静态方法。仅判断两个对象是否为相同的引用。如果Equals(objA,objB)方法,在校验两个对象不为相同的引用,会执行objA.Equals(objB)方法。 

    4.GetHashCode()

      返回对象的哈希值。

    5.GetType()

      以System.Type对象的形式返回对象的类型。

    public class A
    {
    
    }
    
    public class B : A
    {
    
    }
    
    //调用
    public static void Main(string[] args)
    {
        A a = new A();
        B b = new B();
        object o = b;
        A b2 = b;
    
        Console.WriteLine("a:type is {0}",a.GetType());
        Console.WriteLine("b:type is {0}", b.GetType());
        Console.WriteLine("o:type is {0}", o.GetType());
        Console.WriteLine("b2:type is {0}", b2.GetType());
    }
    
    //结果
    a:type is app.A
    b:type is app.B
    o:type is app.B
    b2:type is app.B

    6.ToString()

      返回一个对应于对象实例的字符串。默认是这个类的类型名称。可以给这个类提供一个合适的方法去重写它。

    7.MemberwiseClone()

      通过创建一个新对象实例并复制成员,以复制该对象。成员拷贝不会得到成员的新实例。新对象的任何引用类型的成员都将引用源类相同的对象,这个方法是受保护的,所以只能在类或派生类中使用。

    public class A
    {
        public string Name { get; set; }
    
        public int Age { get; set; }
    
        public B B { get; set; }
    
        public A Clone()
        {
            return (A)this.MemberwiseClone();
        }
    }
    
    public class B
    {
        public string Name { get; set; }
    }
    
    //调用
    public static void Main(string[] args)
    {
        //创建A
        A a = new A();
        a.Name = "aa";
        a.Age = 18;
    
        //创建B
        B b = new B();
        b.Name = "bb";
        a.B = b;
        Console.WriteLine("b的哈希" + b.GetHashCode());
    
    
        Console.WriteLine("====源对象====");
        Console.WriteLine(a.Name);
        Console.WriteLine(a.Age);
        Console.WriteLine("a的哈希" + a.GetHashCode());
        Console.WriteLine("a中b的哈希" + a.B.GetHashCode());
        A a2 = a.Clone();
        Console.WriteLine("====复制对象====");
        Console.WriteLine(a2.Name);
        Console.WriteLine(a2.Age);
        Console.WriteLine("a2的哈希" + a2.GetHashCode());
        Console.WriteLine("a2中b的哈希" + a2.B.GetHashCode());
    }
  • 相关阅读:
    安装nginx
    查看Linux内核
    Python学习总结11:获取当前运行类名和函数名
    Python学习总结10:获取shell输出结果
    Python学习总结9:目录操作方法汇总
    Python学习总结8:文件模式及操作方法汇总
    Python学习总结7:随机字符串和随机数
    Python学习总结6:字符串格式化操作及方法总结
    Python学习总结5:数据类型及转换
    Python学习总结4:字符串常量与操作汇总
  • 原文地址:https://www.cnblogs.com/shadoll/p/14523621.html
Copyright © 2011-2022 走看看