c# 值类型和引用类型

值类型:int float double char int bool byte short long enum

 

struct decimal

 

引用类型:string 类 object FileStream  interface  委托\数组

 

栈:连续的

堆:不连续的

int n =10;在栈分配了内存地址为10,在地址起来别名为n

double d = 8; 在栈划分内存地址为8

string s= "12345";在栈划分内存地址,不是"12345",

引用类型在堆里分配"12345",编译成内存地址到栈

int x = n;值类型又拷贝了一份内存

string x1= s;引用类型不在堆上分配新地址,栈地址不同

值类型继承valueType

值类型拷贝的是副本

int i = 10; - >存储在栈内

Person p = new Person();//i,p会编译内地址的数字,直接使用地址而非

 

变量名,栈内存储的是地址而非变量名

 

//4个方法

static void Change(int x)

{

   x = x + 1;

}

 

static void Change(string msg)

{

   //字符串的不可变性。

   msg = msg + " World";

}

 

static void Change(int[] arr)

{

//这个是真正的把传递进来的arr数组中的内容给改变了。

for (int i = 0; i < arr.Length; i++)

{

   arr[i] = arr[i] * 2;

}

}

 

string str = "hello";

Change(str);

Console.WriteLine(str); //hello str的指向内容未发生改变

 

int n = 10;

Change(n);

Console.WriteLine(n); //n是几?    →   10

 

//数组是一个引用类型

int[] arrInt = new int[] { 1, 2, 3, 4, 5 };

Change(arrInt);

for (int i = 0; i < arrInt.Length; i++)

{

   Console.Write(arrInt[i] + "\t");  

}

Console.WriteLine(); //2 4 6 8 10 arrInt的指向内容发生了改变

posted @ 2014-01-24 14:19  Net-Spider  阅读(152)  评论(0)    收藏  举报