惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
CXSECURITY Database RSS Feed - CXSecurity.com
aimingoo的专栏
aimingoo的专栏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
D
Docker
博客园 - 叶小钗
Recent Announcements
Recent Announcements
人人都是产品经理
人人都是产品经理
云风的 BLOG
云风的 BLOG
Vercel News
Vercel News
Hugging Face - Blog
Hugging Face - Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
美团技术团队
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
F
Fortinet All Blogs
博客园 - 三生石上(FineUI控件)
Microsoft Security Blog
Microsoft Security Blog
H
Heimdal Security Blog
有赞技术团队
有赞技术团队
The Cloudflare Blog
S
Secure Thoughts
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
The Blog of Author Tim Ferriss
M
MIT News - Artificial intelligence
Google DeepMind News
Google DeepMind News
Schneier on Security
Schneier on Security
N
News and Events Feed by Topic
小众软件
小众软件
C
Cybersecurity and Infrastructure Security Agency CISA
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - Franky
T
Tenable Blog
The Last Watchdog
The Last Watchdog
腾讯CDC
量子位
Google DeepMind News
Google DeepMind News
Help Net Security
Help Net Security
雷峰网
雷峰网
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Cyberwarzone
Cyberwarzone
S
Securelist
Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Proofpoint News Feed
D
Darknet – Hacking Tools, Hacker News & Cyber Security
I
InfoQ
Spread Privacy
Spread Privacy
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hackread – Cybersecurity News, Data Breaches, AI and More

博客园 - 牛奶哥

C#点滴 - 深拷贝与浅拷贝 C#点滴 - 抽象类与接口区别 C#点滴 - ?与?? C#点滴 - 类型转换 C#点滴 - 关于String C#点滴 – 内建基本类型 C#点滴 – CLR, CTS…等等基本概念 SharePoint 2010 学习资料 初学SilverLight - (3)简单布局 初学SilverLight - (2)第一个SilverLight程序 初学SilverLight - (1)开发环境准备 WCF热带鱼书学习手记 - Security (1) 概述 关于在SharePoint中管理大文件的一些想法 WCF热带鱼书学习手记 - Service Contract Overload WCF热带鱼书学习手记 - client coding WCF热带鱼书学习手记 - metadata WCF热带鱼书学习手记 - endpoint - 牛奶哥 WCF热带鱼书学习手记 - ABC WCF热带鱼书学习手记 - Host Type - 牛奶哥
C#点滴 - 值类型与引用类型
牛奶哥 · 2010-03-26 · via 博客园 - 牛奶哥

1. 所有对象都继承自System.Object,而所有的值类型都继承自System.ValueType。也就是说,System.ValueType重写了System.Object的方法使得值类型的操作是基于值而不是基于引用。

2. 值类型内存分配在栈上,引用类型内存分配在托管堆中。内存分配在这两个地方的区别在于:如果超出了值类型定义的范围,值类型分配的内存会立刻从内存中清除,即它的内存生命周期是可以预测的。而引用类型分配在托管堆中,内存管理有垃圾处理器控制,不可预知其生命周期。

3. 赋值操作

值类型赋值操作是会依次copy所有成员变量的值。引用类型仅仅是地址重定向。

4. 参数传递

默认为值传递,即参数为值类型是传递值类型的值副本,参数为引用类型时传递引用类型地址值副本。但当参数使用out或者ref关键字是,传递的是引用本身。但是在使用ref,需要注意一些区别:

  • 当参数为引用类型时,不使用ref关键字,方法还是可以通过传入的引用改变其所指向的实例,但是不能改变引用本身。
  • 当参数为引用类型时,同时使用ref关键字,方法可以通过传入的引用改变其所指向的实例,并且改变引用本身。

5. 值类型是sealed的,不能继承

6. 值类型不能写Finalize()方法,该方法用于堆上的内存回收。

7. 装箱与拆箱

装箱 - 把值类型转换为引用类型。

拆箱 - 把引用类型转换为值类型。

作用:可以把值类型也看作是对象。最常使用的情况是在集合操作的时候,大多数方法接口都接收一个对象参数(object)。当传入值类型时,.NET会自动处理装箱细节,把值类型转变为引用类型。从集合取出时,把引用类型的值取出放回值类型变量。

缺点:性能上有损失。并且缺少类型安全保证。.NET 2.0推出了泛型 基本上能解决这个问题。