当前位置: 首页 > news >正文

C#-万物之父object、装箱拆箱

万物之父:object

基于里氏替换原则,可以用object容器装载一切类型的变量。可以用来表示不确定类型,作为函数参数类型

object是所有类型的基类

装箱拆箱

  1. 用object存值类型(装箱)→ 把值类型用引用类型存储,栈内存迁移到堆内存中

  2. 把object里面存的值转为值类型(拆箱)→ 把引用类型存储的值类型取出来,堆内存迁移到栈内存中

好处:不去定类型时可以用,方便参数存储和传递

坏处:存在内存的迁移,增加了性能消耗

不是不用,尽量少用

 基础语法
//用装箱描述装箱拆箱
int i=10;
object o=i;//装箱
int j=(int)0;//拆箱,使用括号强转
装箱拆箱示例 
class Father{}
class Son : Father{public void Speak(){}}
-------------------------------------------------
object o = new Son();
//用is as 来判断和转换即可
if( o is Son )
{(o as Son).Speak();
}//特殊的string类型
object str = "123123";
string str2 = str as string;//object转为string类型
string str3 = str.ToString();object arr = new int[10];
int[] ar = arr as int[];//引用类型的数据都可以使用as来转换
int[] ar2 = (int[])arr;

涉及到值类型的数据转换,使用 括号强转 

涉及到引用类型的数据转换,使用 is 判断类型,使用 as 转换 

 object和变长参数搭配使用
static void TestFun( params object[] array ){}
TestFun(1, 2, 3, 4f, 34.5, "123123", new Son());

http://www.lryc.cn/news/480082.html

相关文章:

  • AI大模型重塑软件开发流程:从自动化编码到智能协作的未来展望
  • HTB:GreenHorn[WriteUP]
  • SelfAttention在Ascend上的实现
  • C#设计模式
  • 仪表板展示|DataEase看中国:历年双十一电商销售数据分析
  • 急着骂华为?我劝你别急
  • 虚拟机linux7.9下安装mysql
  • 【Linux】一篇文章轻松搞懂基本指令
  • 深入浅出理解Spring和SpringBoot,剖析自动配置源码
  • Spring配置文件初始化加载(一)
  • 正则表达式 - 简介
  • 【电机控制器】STC8H1K芯片——ADC电压采集
  • 图像格式中的 stride 和 pix stide
  • 传统POE供电P1摄像头实现
  • 云计算基础:AWS入门指南
  • pytorch torch.tile用法
  • 实战项目:通过自我学习让AI学习五子棋 - 1 - 项目定义
  • 统信UOS开发环境支持Electron
  • 2024.11.09【BUG报错】| Fastuniq “Error in Reading pair-end FASTQ sequence!”解决方案
  • k8s组件原理
  • 0基础跟德姆(dom)一起学AI 深度学习02-Pytorch基本使用
  • 九州未来再度入选2024边缘计算TOP100
  • 《物理化学学报》
  • 【数据集】【YOLO】【目标检测】树木倒塌识别数据集 9957 张,YOLO道路树木断裂识别算法实战训练教程!
  • iOS 18.2 六大新功能外媒實測|ChatGPT進化版SIRI、自製Genmoji
  • 简单介绍一下mvvm mvc mvp以及区别、历史
  • 达梦8-达梦数据实时同步软件(DMHS)配置-Oracle-DM8
  • mysql常见死锁的分析
  • Go Energy 跨平台(GUI)应用编译和安装包制作
  • 众测遇到的一些案列漏洞