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());
        }
    }
}
相关推荐
Lost of 程序猿2 小时前
用 YARP 为 .NET 微服务搭一座“立交桥“:路由转发与生产配置实践
c#·asp.net
码行山野赴时序归途3 小时前
链表家族收官篇:循环链表
c语言·开发语言·数据结构·链表
景熙55233 小时前
单体项目编写思路和落地形式
java·开发语言
计算机毕设定制辅导-无忧学长4 小时前
《基于SpringBoot的未成年人健康知识科普平台的设计与实现》
java·开发语言·vue.js·spring boot·未成年人健康知识科普平台
Ivanqhz4 小时前
Ping-Pong 双缓冲
开发语言·人工智能·python·深度学习·mlir
m0_734571764 小时前
深入理解C++ RAII
开发语言·c++
泡海椒4 小时前
jquick-pdf 表格实战:动态数据 PDF 报表生成
java·开发语言·pdf
aramae4 小时前
模拟实现memset()(C语言)
c语言·开发语言·后端
wuyk5555 小时前
【Socket 进阶之路】第 7 章 IO 多路复用 select & poll 完整实战|多 fd 监听、超时等待、优缺点横向对比
服务器·开发语言·网络·数据库·物联网
船厂电气自动化ai大模型5 小时前
AI大模型与数学|第81天 课程:正交向量、正交基、格拉姆‑施密特(Gram‑Schmidt)正交化
开发语言·数据结构·人工智能·线性代数·机器学习