首页 > 编程语言 >c#优化装箱拆箱

c#优化装箱拆箱

时间:2024-08-18 09:49:13浏览次数:10  
标签:拆箱 c# ArrayList List Test 类型 泛型 装箱

1、通过泛型

//obj是一个int类型的值类型,在new Test的时候传进去的obj是就会装箱成引用类型,以为Test类是引用类型
int obj = 2;
Test test = new Test(obj);
//通过泛型这里obj传进去的就是值类型,就不需要装箱了
Test<int> test = new Test<int>(obj); 

第一段代码中会发生装箱,因为int类型的值被传递给一个引用类型的构造函数。而第二段代码中不会发生装箱,因为Test<int>是一个泛型类,它直接使用int作为类型参数,而不需要将其转换为引用类型。

2、使用泛型List,不用ArrayList

List是泛型的不会发生装箱,而ArrayList存储的是对象的引用,当你存储值类型时,会发生装箱。

// 创建一个ArrayList实例
ArrayList arrayList = new ArrayList();
// ArrayList可以存储任何类型的对象,因此不需要指定类型参数
arrayList.Add(10); // 自动装箱为object

// 使用泛型 List<int> 存储整数
List<int> intList = new List<int>();
intList.Add(10);//不会装箱

在上述示例中,我们使用了 List<int> 来存储整数,使用 List<string> 来存储字符串。泛型的 List<T> 提供了类型安全,避免了像 ArrayList 那样可能出现的类型不匹配问题。

标签:拆箱,c#,ArrayList,List,Test,类型,泛型,装箱
From: https://www.cnblogs.com/cplmlm/p/18365310

相关文章

  • RocketMQ集群ACL设置
    一、概述因安全需求,需要对RocketMQ添加ACL设置注意:ACL功能需要高版本支持,低版本不行,本文使用的版本为4.9.4 关于搭建RocketMQ集群,请参考链接:https://www.cnblogs.com/xiao987334176/p/16771899.html 二、配置修改配置文件broker-a/broker-a.conf,broker-b/broker-b.conf最......
  • lit tailwindcss vite模板
    pnpmcreatevite@latestmy-project----templatelitcdmy-projectpnpminstall-Dtailwindcsspostcssautoprefixersass-embeddednpxtailwindcssinit-ptailwindcss.config.js:/**@type{import('tailwindcss').Config}*/exportdefault{core......
  • C#实现国产Linux视频录制生成mp4(附源码,银河麒麟、统信UOS)
    随着信创国产化浪潮的来临,在国产操作系统上的应用开发的需求越来越多,最近有个客户需要在银河麒麟或统信UOS上实现录制摄像头视频和麦克风声音,将它们录制成一个mp4文件。那么这样的功能要如何实现了?一.技术方案要完成这些功能,具体来说,需要解决如下几个技术问题:(1)麦克风数据采集......
  • D46 2-SAT+线段树优化+二分 [ARC069F] Flags
    视频链接: [ARC069F]Flags-洛谷|计算机科学教育新生态(luogu.com.cn)//D462-SAT+线段树优化+二分O(nlognlogv)#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;#definemid((l+r)>>1)#definels(u<<1)#definer......
  • Vue 报错error:0308010C:digital envelope routines::unsupported
    目录Vue报错error:0308010C:digitalenveloperoutines::unsupported方法1.打开终端(按健win+R弹出窗口,键盘输入cmd,然后敲回车)并按照说明粘贴这些:方法2.安装vnm及node版本方法3.在项目package.json文件中增加配置Vue报错error:0308010C:digitalenveloperoutine......
  • 一个简单的Rtmp推流客户端(QT录音,OpenCV摄像,FFmpeg编码推流)
            RTMP(Real-TimeMessagingProtocol)是一种实时流媒体传输协议,常用于音视频直播。        RTMP推流客户端是一种能够将音视频数据推送到直播服务器的工具。QT录音是利用Qt库实现的录音功能。OpenCV摄像是利用OpenCV库实现的对摄像头的控制和图像处理功......
  • size of rust closure
    principlehttps://doc.rust-lang.org/reference/types/closure.html?highlight=fnonce#closure-typesdemo1fnf<F:FnOnce()->String>(g:F){println!("{}",std::mem::size_of::<F>());println!("{}",g());}fnm......
  • huggingface_hub cli 使用以及国内加速配置
    主要是一个简单记录,方便后续使用安装pipinstall-Uhuggingface_hub使用下载模型huggingface-clidownload--resume-downloadgpt2--local-dirgpt2下载数据huggingface-clidownload--repo-typedataset--resume-d......
  • JetBrains Aqua 2024.2 (macOS, Linux, Windows) - 测试自动化 IDE
    JetBrainsAqua2024.2(macOS,Linux,Windows)-测试自动化IDEJetBrains跨平台开发者工具请访问原文链接:https://sysin.org/blog/jetbrains-aqua/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgAqua测试自动化IDE享受更高效的测试体验为什么选择Aqua......
  • JetBrains CLion 2024.2 (macOS, Linux, Windows) - C 和 C++ 跨平台 IDE
    JetBrainsCLion2024.2(macOS,Linux,Windows)-C和C++跨平台IDEJetBrains跨平台开发者工具请访问原文链接:https://sysin.org/blog/jetbrains-clion/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgJetBrainsCLion-C和C++跨平台IDE用于强大语言的......