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

推荐订阅源

Help Net Security
Help Net Security
G
Google Developers Blog
雷峰网
雷峰网
WordPress大学
WordPress大学
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Engineering at Meta
Engineering at Meta
Security Latest
Security Latest
T
Threat Research - Cisco Blogs
AWS News Blog
AWS News Blog
F
Full Disclosure
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Exploit Database - CXSecurity.com
J
Java Code Geeks
U
Unit 42
C
Cyber Attacks, Cyber Crime and Cyber Security
V
V2EX
C
Cisco Blogs
博客园 - 司徒正美
Project Zero
Project Zero
L
LINUX DO - 热门话题
阮一峰的网络日志
阮一峰的网络日志
Blog — PlanetScale
Blog — PlanetScale
Scott Helme
Scott Helme
A
About on SuperTechFans
Hugging Face - Blog
Hugging Face - Blog
S
Securelist
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
S
Schneier on Security
G
GRAHAM CLULEY
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyberwarzone
Cyberwarzone
MongoDB | Blog
MongoDB | Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 叶小钗
T
Threatpost
Recorded Future
Recorded Future
C
CXSECURITY Database RSS Feed - CXSecurity.com
宝玉的分享
宝玉的分享
N
News and Events Feed by Topic
人人都是产品经理
人人都是产品经理
The Register - Security
The Register - Security
S
Security Archives - TechRepublic
博客园 - Franky
N
News | PayPal Newsroom
Simon Willison's Weblog
Simon Willison's Weblog
S
SegmentFault 最新的问题
W
WeLiveSecurity
A
Arctic Wolf
B
Blog

博客园 - 小居工作室

七牛云存储客户端(本人开发,开源) 如鹏网 net高级技术 第二章 委托和事件(复习) 如鹏网 net高级技术 第一章 各种知识点(复习) 写个QuartzHelper类 Pdf File Writer 中文应用(PDF文件编写器C#类库) 如鹏网 静态Web开发 第五章:JQuery 如鹏网 静态Web开发 第四章:JSDom 如鹏网 静态Web开发 第三章:Javascript 如鹏网 静态Web开发 第二章:css 如鹏网 静态Web开发 第一章:html 如鹏网.Net三层架构 第四章代码生成器 如鹏网.Net三层架构 第三章MD5和NPOI使用 如鹏网.Net三层架构第二章登录和会员管理 如鹏网.Net三层架构第一章三层基础 如鹏网.Net高级技术9.XML文件操作 如鹏网.Net高级技术8.反射 如鹏网.Net高级技术6.正则表达式 如鹏网.Net高级技术7.委托、事件 如鹏网.Net高级技术5.泛型集合及键值对 如鹏网.Net高级技术4.String特点及常用方法
如鹏网.Net高级技术3.值类型和引用类型
小居工作室 · 2016-03-04 · via 博客园 - 小居工作室

.Net高级技术3.值类型和引用类型

C#中哪些类型属于值类型,哪些类型属于引用类型,

什么是装箱,什么是拆箱?

了解结构体,ref和out使用。

以上都是该段课程中需要掌握的内容。

什么是值类型:值类型均隐式派生自System.ValueType   :类型 变量名=初始化值;

 int num=90; num.GetType().Basetype()

值类型有哪些:数值类型、bool、结构、枚举查看IL,隐式继承自ValueType

什么是引用类型:引用类型派生自System.Object

引用类型有哪些:字符串、数组、类、接口等查看IL隐式继承自Object ;

 引用类型变量的赋值只复制对对象的引用。

值类型变量赋值会拷贝一个副本。

值类型只在栈中存储,引用类型的变量名是存储在栈内存中,new 对象存储在堆内存中。

栈内存:值类型,变量名

堆内存:new 类

装箱和拆箱是怎么回事?前后类型必须一样

IL 中 有box 就发生了装箱,有unbox就发生了拆箱

有没有发生装箱,首先看有没有继承关系,int 和string之间没有继承类型

装箱在值类型向引用类型转换时发生(两者有明确的继承关系)

拆箱在引用类型向值类型转换时发生(两者有明确的继承关系)

-------------------------------------------------

结构体 :省空间可以使用。

在没有面向对象、在没有类的情况下如何组织一些相关的数据?

结构体: 一种值类型,拷贝副本。

注意: 对于结构,不像类那样存在继承。一个结构不能从另一个结构或类继承。但是,结构从基类 Object 继承。

结构只能实现接口,其方式同类完全一样;不能继承。

结构体是值类型,传值的时候拷贝的是副本

对于结构,不像类那样存在继承。

一个结构不能从另一个结构或类继承。但是,结构从基类 Object 继承(有object类的方法)。

结构可实现接口,其方式同类完全一样。

结构体大家了解即可。

-------------------------------------------------

 ref 和out使用:

1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。 2、使用ref和out时,在方法的参数和执行方法时,都要加ref或out关键字。以满足匹配。 3、out适合用在需要retrun多个返回值的地方, 而ref则用在需要被调用的方法修改调用者的引用的时候。

 ref :

  可以把值传到方法中,也可以把方法中的值返回来---〉可进可出的

  传入的参数必须先初始化。

当参数个数 和类型一样时,只是ref 和 out 是不能构成重载的 。

使用ref传参数的时候,传入的参数必须先被初始化。

out:

  把方法中的值传出去,外面调用变量可以没有初始值。

使用out传参数的时候,必须在方法中对其完成初始化。 

使用ref和out时,在方法的参数和执行方法时,都要加ref或out关键字。以满足匹配。 

out适合用在需要retrun多个返回值的地方,

而ref则用在需要被调用的方法修改调用者的引用的时候。

  案例:

    int n;

    int.TryParse("sf",out n);

    Console.WriteLine(n); //0默认值

如鹏网:http://www.rupeng.com