C#基础12.1:Object类

 

PS:注释和讲解部分在代码中

1. Object类

问题提出:你实现了一个只有Print()这唯一方法的类,然后在实例化对象时发现了一个诡异的问题:

为什么多出了这么多我并没有定义的方法?

这是因为在C#中存在一个Object类,它是所有类的父类,所有的类都直接或者间接继承自Object类

VS跳转入Object类的方法:

选中object变量按F12即可

结果如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace C4_程序设计
{
    class Text
    {
        string name;
        public Text(string name)
        {
            this.name = name;
        }
        public void Print()
        {
            Console.WriteLine(name);
        }
        public override string ToString()       //可以重写Object类中的ToString()函数以方便测试
        {
            return string.Format("My name is {0}!", name);
            //return base.ToString();
        }
    }
    class Object类
    {
        static void Main()
        {
            Text me = new Text("hautcds");
            Console.WriteLine(me.ToString());       //如果不重写ToString()函数,输出结果为:C4_程序设计.Text
            //实际输出结果:My name is hautcds!

            //装箱与拆箱:
            //装箱:值类型-->引用类型
            //拆箱:引用类型-->值类型
            //装箱和拆箱本质上是数据存储在栈空间与堆空间之间变更(因此频繁的装箱或拆箱会降低代所以代码中尽量少用装箱或拆箱操作)

            Object B = new Object();         //注意区分Object和object,Object是个类,而object是个类型,object是Object的一个别称
            int a = 12;
            Console.WriteLine(a);
            object b = a;            //装箱操作:值类型-->引用类型
            Console.WriteLine(b);
            a = (int)b;              //拆箱操作:引用类型-->值类型
            Console.WriteLine(a);
            //以上输出结果都是12
        }
    }
}

 

2. 装箱与拆箱

  • 装箱:值类型-->引用类型
  • 拆箱:引用类型-->值类型

装箱和拆箱本质上是数据存储在栈空间与堆空间之间变更(因此频繁的装箱或拆箱会降低代所以代码中尽量少用装箱或拆箱操作),代码如上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值