一.装箱和拆箱
将值类型转换为引用类型的过程称为装箱,反之称为拆箱
实际开发尽量避免 装/拆 箱
原因:
装/拆 箱都会降低程序性能
示例代码:
static void Main(string[] args)
{
int num = 1;
object obj = num; //有装箱操作
int result = (int)obj; //拆箱操作
//要想拆箱,先有装箱。
}
二.不同类型的参数传递
1.值方式参数传递
1)使用值类型作为参数
以值类型作为参数进行值方式传递参数时,不能改变值类型参数的值
int num1 = 3;
int num2 = 5;
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 = 10;
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.使用引用类型作为参数
以值类型作为参数进行引用方式传递参数时,能改变值类型参数的值
int num1 = 3;
int num2 = 5;
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 = 10;
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;
}