深入.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学习心得(五) 运 ...
随机推荐
- python学习之路day2
模块学习: 标准库: os: 第三方库:
- linux apt-cache使用方法
apt-cache是linux下的一个apt软件包管理工具,它可查询apt的二进制软件包缓存文件.APT包管理的大多数信息查询功能都可以由apt-cache命令实现,通过apt-cache命令配合不同 ...
- eclipse导入新项目后,运行时找不到主类解决办法
最近在学习多线程,今天下了一套源码,导入到eclipse里后,随便找了个带main()的类试了一下,找不到主类. 首先想到的解决办法是把工程clean一下,并没有用.去网上找了一个遍终于找到了管用的方 ...
- poj 2299 Ultra-QuickSort(树状数组求逆序数+离散化)
题目链接:http://poj.org/problem?id=2299 Description In this problem, you have to analyze a particular so ...
- webpack+babel项目在IE下报Promise未定义错误引出的思考
低版本浏览器引起的问题 最近开发一个基于webpack+babel+react的项目,一般本地是在chrome浏览上面开发,chrome浏览器开发因为支持大部分新的js特性,所以一般不怎么需要poly ...
- 中国版Office 365 应用程序注册
作者:陈希章 发表于 2017年3月23日 中国版Office 365是由世纪互联进行运营的一个云服务,单纯从技术角度来看的话,它基本保持了与国际版的同步.但是由于两个版本本质上是完全独立的,其中最关 ...
- 十一、Spring Boot 集成Shiro和CAS
1.Shiro 是什么?怎么用? 2.Cas 是什么?怎么用? 3.最好有spring基础 首先看一下下面这张图: 第一个流程是单纯使用Shiro的流程. 第二个流程是单纯使用Cas的流程. 第三个图 ...
- TableML-GUI篇(Excel编译/解析工具)
项目情况 本文接上篇TableML Excel编译/解析工具,本文主要介绍GUI工具的使用,及配置项,如果你想了解此工具更加详细的说明,请阅读上篇文章. 项目地址:https://github.com ...
- 青否云 - 小程序待办事项 wxapp开源系统
青否云最新开源系统:小程序待办事项 wxapp-demo 青否云 小程序 demo 下载地址:https://github.com/qingful/wxapp-demo 官网 http://cloud ...
- myeclipse 2014 Customize Perspective 失效
1.将9个jar复制到myeclipse安装目录\plugins中 2.删除和这9个jar同包名但是版本号较低的9个文件 3.重启myeclipse 2014 注:这9个 jar 包 自己到网上搜索, ...