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());
        }
    }
}
相关推荐
夏幻灵20 分钟前
JavaScript this 面试:五种绑定规则、优先级与常见面试陷阱
开发语言·javascript·面试
程序猿编码32 分钟前
榨干 RTX5090 算力!Qwen3 专用单卡推理引擎,手写C++/CUDA 算子实现 MTP 推测解码
开发语言·c++·大模型推理·qwen3·多模态推理
曹牧2 小时前
C#:未被引用的函数
c#
bkspiderx2 小时前
Qt 插件机制:动态扩展应用功能的核心框架
开发语言·qt·元数据·qt 插件·qpluginloader
程序员老陆2 小时前
深入理解 C++ thread_local:线程私有存储的正确打开方式
开发语言·c++·程序设计
沐晓时光2 小时前
C语言入门,深入理解指针(3)
c语言·开发语言
码云数智-园园3 小时前
unique_ptr 还是 shared_ptr?C++ 智能指针选型与内存泄漏实战分析
java·开发语言
禾小西4 小时前
07丨Redis 哨兵机制:主库故障后,如何恢复服务?
java·开发语言·redis
我不是阵雨4 小时前
JDK 21虚拟线程Pinning陷阱:一文拔钉解困
java·开发语言
徐小黑ACG4 小时前
Golang 基础05 结构体struct
开发语言·算法·golang