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());
    }
  • 相关阅读:
    Java中extends和implements区别【杭州多测师】【杭州多测师_王sir】
    以下字符串,如果单词以辅音字母开头,则把辅音字母挪到最后,并在末尾加上“ay”。 如果以元音字母开头,则在末尾加上“hay”。 元音字母是“a.e.i.o.u” 字符串是“My name is Shopline,and i am 2,0000 days old”【杭州多测师】【杭州多测师_王sir】
    Linux环境下,请用一条命令计算出request.log文件中所有包含“requestDate”但是不包含“error”的行数【杭州多测师】【杭州多测师_王sir】
    主机重启hosts配置失效原因
    DNS BIND区域数据文件
    dns主从及智能dns搭建
    nginx 添加免费https证书
    nginx变量参数
    nginx last break详解
    常用工具下载地址
  • 原文地址:https://www.cnblogs.com/shadoll/p/14523621.html
Copyright © 2011-2022 走看看