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;
相关推荐
CDwenhuohuo1 小时前
var面试题
开发语言·javascript·ecmascript
PD我是你的真爱粉1 小时前
深入理解 Event Loop:JavaScript 的“心脏起搏器”
开发语言·javascript·ecmascript
GIS程序猿2 小时前
批量出图工具,如何使用C#实现动态文本
开发语言·arcgis·c#·arcgis插件·gis二次开发
量子物理学2 小时前
三、C#高级进阶语法——特性(Attribute)
java·算法·c#
dzl843942 小时前
mac 安装python
开发语言·python·macos
北风toto2 小时前
JDK8(JAVA)供应商说明
java·开发语言
量子物理学2 小时前
四、C#高级进阶语法——委托(Delegate)
开发语言·c#
上下求索,莫负韶华2 小时前
java-(double,BigDecimal),sql-(decimal,nuermic)
java·开发语言·sql
JobDocLS2 小时前
C++重要知识点相关代码
开发语言·c++