深入.NET数据类型(2)
一.装箱和拆箱
将值类型转换为引用类型的过程称为装箱,反之称为拆箱


实际开发尽量避免 装/拆 箱
原因:
装/拆 箱都会降低程序性能
示例代码:
static void Main(string[] args)
{
;
object obj = num; //有装箱操作
int result = (int)obj; //拆箱操作
//要想拆箱,先有装箱。
}
二.不同类型的参数传递
1.值方式参数传递
1)使用值类型作为参数
以值类型作为参数进行值方式传递参数时,不能改变值类型参数的值
;
;
Console.WriteLine("交换前:num1的值{0}\tnum2的值{1}", num1, num2);
//最简单的两个变量交换
//借助第三方
Change(num1, num2);
Console.WriteLine("交换后:num1的值{0}\tnum2的值{1}", num1, num2);
static void Change( int num1, int num2)
{
int temp = num1;
num1 = num2;
num2 = temp;
}
2)使用引用类型作为参数
以引用类型作为参数进行值方式传递参数时,能改变引用类型参数的值
static void Main(string[] args)
{
Voter voter = new Voter();
SE se = new SE();
se.popularity = ;
voter.Vote(se);
voter.Vote(se);
Console.WriteLine(se.popularity);
}
public void Vote(SE se)
{
se.popularity++;
}
public class SE
{
public int popularity;
}
2.引用方式参数传递(ref)
1.使用引用类型作为参数
以值类型作为参数进行引用方式传递参数时,能改变值类型参数的值
;
;
Console.WriteLine("交换前:num1的值{0}\tnum2的值{1}", num1, num2);
//最简单的两个变量交换
//借助第三方
Changeref num1,ref num2);
Console.WriteLine("交换后:num1的值{0}\tnum2的值{1}", num1, num2);
static void Change(ref int num1,ref int num2)
{
int temp = num1;
num1 = num2;
num2 = temp;
}
2.使用引用类型作为参数
以值引用型作为参数进行引用方式传递参数时,能改变引用类型参数的值
static void Main(string[] args)
{
Voter voter = new Voter();
SE se = new SE();
se.popularity = ;
voter.Vote(ref se);
voter.Vote(ref se);
Console.WriteLine(se.popularity);
}
public void Vote(ref SE se)
{
se.popularity++;
}
public class SE
{
public int popularity;
}
深入.NET数据类型(2)的更多相关文章
- JavaScript 中的数据类型
Javascript中的数据类型有以下几种情况: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Date,Ar ...
- JS 判断数据类型的三种方法
说到数据类型,我们先理一下JavaScript中常见的几种数据类型: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Functi ...
- Python高手之路【二】python基本数据类型
一:数字 int int(整型): 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值 ...
- UniqueIdentifier 数据类型 和 GUID 生成函数
UniqueIdentifier 数据类型用于存储GUID的值,占用16Byte. SQL Server将UniqueIdentifier存储为16字节的二进制数值,Binary(16),按照特定的格 ...
- SQL Server常见数据类型介绍
数据表是由多个列组成,创建表时必须明确每个列的数据类型,以下列举SQL Server常见数据类型的使用规则,方便查阅. 1.整数类型 int 存储范围是-2,147,483,648到2,147,483 ...
- 由js apply与call方法想到的js数据类型(原始类型和引用类型)
原文地址:由js apply与call方法想到的js数据类型(原始类型和引用类型) js的call方法与apply方法的区别在于第二个参数的不同,他们都有2个参数,第一个为对象(即需要用对象a继承b, ...
- python 数据类型 ----字典
字典由一对key:value 组成的 python中常用且重量级的数据类型 1. key , keys, values 字典由一对key:value 组成的 python中常用且重量级的数据类型 1. ...
- SQL数据类型
1.Character 字符串: 数据类型 描述 存储 char(n) 固定长度的字符串.最多8,000个字符. n varchar(n) 可变长度的字符串.最多8,000个字符. varchar ...
- 跟着老男孩教育学Python开发【第二篇】:Python基本数据类型
运算符 设定:a=10,b=20 . 算数运算 2.比较运算 3.赋值运算 4.逻辑运算 5.成员运算 基本数据类型 1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**3 ...
- 我的MYSQL学习心得(二) 数据类型宽度
我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
随机推荐
- HDU 3549 Flow Problem 网络流(最大流) FF EK
Flow Problem Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Tot ...
- MySQL之事务的四大特性
事务就是一组原子性的SQL查询,或者说一个独立的工作单元.如果数据库引擎能够成功地对数据应用该组查询的全部语句,那么久执行该组查询.如果其中任何一条语句因为崩溃或其他原因无法执行,那么所有语句都不会执 ...
- javascript 45种缓动效果BY司徒正美
javascript 45种缓动效果 参数 类型 说明 el element 必需,为页面元素 begin number 必需,开始的位置 change number 必需,要移动的距离 durati ...
- cronlog分割tomcat catalina.out日志
Tomcat 下日志文件 catalina.out 过大,几百兆或几个G,进而造成再也无法写入更多的日志内容,至使 Tomcat 无法处理请求,所以依靠cronlog来分割: 具体步骤如下: 1.安装 ...
- cocos2d-x 托付模式的巧妙运用——附源代码(一)
先来说一下托付模式是什么.以下的内容摘要自维基百科: 托付模式是软件设计模式中的一项基本技巧.在托付模式中,有两个对象參与处理同一个请求.接受请求的对象将请求托付给还有一个对象来处理.托付模式是一项基 ...
- ccbpm工作流引擎是怎样支持多种流程模式的
前言: 在BPM领域支持流程运转的理论模型有多种.有的21种.28种.32种. 每种模式都代表了这样的模式的理论设计者研究者的人员主张.思想.这些模式尽可能的,全然去覆盖到现实生产.工作.应用上的流程 ...
- 《Pro Android Graphics》读书笔记之第六节
Android UI Layouts: Graphics Design Using the ViewGroup Class Android ViewGroup Superclass: A Founda ...
- flask框架-decorator装饰器
调用包: from functools import wraps 装饰器其实就是一个函数:参数是一个函数,返回值是一个函数 1.装饰器使用是通过@符号,在函数的上面 2.装饰器中定义的函数,要使用*a ...
- MyBatis 批量操作、集合遍历-foreach
在使用mybatis操作数据库时,经常会使用到批量插入.IN条件查询的情况,这时就难免要使用到foreach元素.下面一段话摘自mybatis官网: foreach 元素的功能是非常强大的,它允许你指 ...
- CenOS 6.5下 mysql自动备份
1.mysql备份命令是mysqldump,自动执行可以用cron,但是文件名需要带有时间标志,shell处理起来很麻烦,我就选择了python来解决 2.文件名用time模块来解决,执行系统命令 ...