c#基础-13.万物之父(object)和装箱、拆箱、密封类

概念:它是所有类型的基类,基于里氏替换原则,可以用object容器装任何物体。

例子:

static void Main(string[] args)
        {
            //引用类型,用as
            object son = new Son();
            if(son is Son)
            {
                (son as Son).Speak();
            }
            object str = "123456";
            string s = str as string;
            //string s=str.ToString();
            object nums = new int[10];
            int[] arr = nums as int[];
            //值类型,用强转
            object num = 123;
            int res = (int)num;
            Console.ReadKey();
        }

装箱和拆箱

装箱:将值类型转为引用类型,将栈内存搬到堆内存里。
拆箱:将引用类型转为值类型,将堆内存搬到值内存里。

这里的引用类型用object。

好处:不确定类型可以方便参数的存储和传递。
坏处:内存迁移,性能消耗,所以要少用。

例子:

class Person
    {
        static void Main(string[] args)
        {     
        	//可以传不同类型    
            print(1, 23, 5.0f, 6.12, "hello", new Son());
            Console.ReadKey();
        }
        static void print(params object[] array)
        {

        }
    }

密封类

通过sealed关键字修饰类,让类无法被继承,断子绝孙。

密封方法(与override配合使用)

例子:

abstract class Animal
    {
        public string name;
        public abstract void Eat();
        public virtual void Speak()
        {
            Console.WriteLine("叫");
        }
    }
    class Person : Animal
    {
        //在override前加一个sealed,子类就无法重写
        public sealed override void Eat()
        {
            
        }
        public override void Speak()
        {
            //base.Speak();
        }
    }
    class WhitePerson:Person
    {
        //public override void Eat()
        //{
        //    base.Eat();
        //}
        public override void Speak()
        {
            base.Speak();
        }
    }
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页