c#万物之父装箱拆箱

万物之父

关键字 object

object是所有类型的基类,他是一个类(引用类型)

作用

可以利用里氏替换原则 ,用object容器装所有对象

可以用来表示不确定类型 作为函数参数类型

万物之父的使用

cs 复制代码
class Father
{

}
class Son:Father
{
   public void Speak()
    {
        Console.WriteLine("s");
    }
}


//main函数下
Father f = new Son();
if(f is Son)
{
    (f as Son).Speak();
}

 //引用类型
object o = new Son();
if(o is Son)
{
    (o as Son).Speak();
}
//值类型
object o2 = 1f;
//强转
float f1 = (float)o2;
//string 类型
object str = "123123";
string str2 = str as string;

object arr = new int[10];
int[] ar = arr as int[];

装箱 拆箱

发生条件

用object存值类型(装箱)

再把object转为值类型 拆箱

装箱

把值类型用引用类型存储

把栈内存迁移到堆内存中

拆箱

把引用类型存储的值类型取出来

堆内存会迁移到栈内存中

好处 不确定类型时可以方便参数的存储和传递

坏处 存在内存迁移 增加性能消耗

cs 复制代码
//装箱
object v = 3;
//拆箱
int intValue = (int)v;
相关推荐
为何创造硅基生物5 小时前
C语言 结构体内存对齐规则(通俗易懂版)
c语言·开发语言
吃好睡好便好5 小时前
在Matlab中绘制横直方图
开发语言·学习·算法·matlab
星寂樱易李5 小时前
iperf3 + Python-- 网络带宽、网速、网络稳定性
开发语言·网络·python
仰泳之鹅5 小时前
【C语言】自定义数据类型2——联合体与枚举
c语言·开发语言·算法
之歆6 小时前
DAY_12JavaScript DOM 完全指南(二):实战与性能篇
开发语言·前端·javascript·ecmascript
cen__y7 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
AI人工智能+电脑小能手7 小时前
【大白话说Java面试题 第65题】【JVM篇】第25题:谈谈对 OOM 的认识
java·开发语言·jvm
社交怪人7 小时前
【算平均分】信息学奥赛一本通C语言解法(题号2071)
c语言·开发语言
郭涤生8 小时前
不同主机之间网络通信-以太网连接复习
开发语言·rk3588
山居秋暝LS8 小时前
【无标题】RTX00安装paddle OCR,win11不能装最新的,也不能用GPU
开发语言·r语言