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

推荐订阅源

Y
Y Combinator Blog
有赞技术团队
有赞技术团队
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
人人都是产品经理
人人都是产品经理
酷 壳 – CoolShell
酷 壳 – CoolShell
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Check Point Blog
博客园 - 【当耐特】
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
The Cloudflare Blog
Microsoft Azure Blog
Microsoft Azure Blog
腾讯CDC
Vercel News
Vercel News
IT之家
IT之家
MyScale Blog
MyScale Blog
博客园_首页
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
罗磊的独立博客

博客园 - 小居工作室

七牛云存储客户端(本人开发,开源) 如鹏网 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