C#中的万物之父——Object类

C#中的万物之父即为object类,object类是所有引用类型和值类型的父类,在编写程序时,可以利用里氏替换原则用object容器来装载其他类型的变量,在使用时,引用类型的变量需要利用is与as来搭配调用,值类型的变量则需要利用强转来调用。

用object类来装载值类型的变量的操作称为装箱,利用强转来使用它们的操作称为拆箱。装箱过程中涉及到将存储在栈空间内的变量向堆内存空间内迁移的操作,会涉及到一定的性能消耗,所以要谨慎使用。

cs 复制代码
namespace ConsoleApp8
{
    class Father 
    {
        
    }

    class Son : Father 
    {
        public void Speak() { Console.WriteLine("Hello, World!"); }
    }
    class Program
    {
        static void Main(string[] args)
        {
            object o = new Son();
            if (o is Son) 
            {
                (o as Son).Speak();
            }

            object o1 = 1f;
            float f = (float)o1;

            object o2 = "123123";
            string str = o2 as string;

            object arr = new int[3];
            int[] arr2 = arr as int[];

            static void TestFun(params object[] array) { }

            TestFun(1, 1.2f, "123123", new Son());
        }
    }
}
相关推荐
AOwhisky19 小时前
Python 学习笔记(第十一期)——运维自动化(上·后篇):进程级监控与子进程管理——psutil进阶
运维·开发语言·python·学习·云原生·运维开发
人工干智能19 小时前
Python 的链式调用:一连串的“点”调用
开发语言·python
就不掉头发19 小时前
如何优化程序的性能
开发语言
手写码匠19 小时前
MCP协议从零实现:手写一个完整的 Model Context Protocol 服务器与客户端
开发语言·数据结构
良木生香20 小时前
【C++初阶】STL—— Stack & Queue 从入门到精通:容器适配器、迭代器与经典面试题
java·开发语言·c++·算法·zookeeper
lbb 小魔仙20 小时前
Python 性能分析工具实战:cProfile、memory_profiler、line_profiler 使用指南
开发语言·python
小小晓.20 小时前
C++小白记:vector
开发语言·c++·算法
小刘学技术20 小时前
AI人工智能决策树分类器:原理、实现与应用
开发语言·人工智能·python·算法·决策树·机器学习·数据挖掘
脱胎换骨-军哥20 小时前
C++ 嵌入式编程实例:从寄存器操作到底层驱动开发
开发语言·c++·驱动开发