标签:
int、char、bool等类型的变量与类类型的变量(如string)
前者占据的内存空间很小,后者占据的内存空间较大。
前者采用值传递,就是将变量的值复制一份传递给另一个变量;
如果后者也采用值传递,那么内存将很快被消耗殆尽,所以采用的是引用传递,传递的是内存地址,于是就会出现多个变量指向同一块内存的情形。
class Program
{
static void SetPersonAge(Person p,int age)
{
p._Age = age;
}
static void Main(string[] args)
{
int i = 10;
int j = i++;//先把i的值复制一份赋给j,然后i的值再自增
int k = j;
j *= 2;
Console.WriteLine("i = {0},j = {1},k = {2}",i,j,k);
//输出结果 i = 11,j = 20,k = 10
Person p1 = new Person(20);
Person p2 = p1; //p2与p1指向了同一块内存
p1._Age++; //p1对内存中的变量进行操作后,通过p2取出变量的值,变量的值当然会发生改变
Console.WriteLine("p1._Age = {0},p2._Age = {1},", p1._Age, p2._Age);
//输出:p1._Age = 21,p2._Age = 21
SetPersonAge(p2, 30);//通过函数来传递的情形也是相同的
Console.WriteLine("After Setage.");
Console.WriteLine("p1._Age = {0},p2._Age = {1},", p1._Age, p2._Age);
//输出:p1._Age = 30,p2._Age = 30
}
public class Person
{
public int _Age;
public Person(int age)
{
_Age = age;
}
}
}
标签:
原文地址:http://www.cnblogs.com/lcxBlog/p/4493080.html