标签:
值类型 :顾名思义就是在内存中储存其值的类型,是存放于堆栈中的类型,13个{sbyte,byte,short,ushort,int,uint,long,ulong,float,double,decimal,bool,char}
引用类型 :在内存中存放的是对其的引用地址,是存放于托管堆中的类型,2个{string,object}
--------------------------------------------------------------------------------
☆string :拥有值类型的赋值方式,但实际上是一个引用类型!
1、string跟system.String有什么区别?——>两者实际并无差别,当string被编译成类时就相当于String
2、string跟其他引用类型的区别——>每次赋值时都会New一个新对象,而不是将对象的引用地址指向新变量
如:
Person p1=new Person(); p1.name="张三"; Person p2=p1; Console.writeLine(p1.name);//此处输出p1.name="张三"; Console.writeLine(p2.name);//此处输出p2.name="张三"; p2.name="李四"; Console.writeLine(p1.name);//此处输出p1.name="李四"; Console.writeLine(p2.name);//此处输出p2.name="李四"; //由此可见p1和p2是引用同一个地址,而string则不同 string p1="张三"; string p2=p; Console.writeLine(p1);//此处输出p1="张三"; Console.writeLine(p2);//此处输出p2="张三"; p2="李四"; Console.writeLine(p1);//此处输出p1="张三"; Console.writeLine(p2);//此处输出p2="李四"; //由此可见,每次将string的变量值赋值给另一个变量,都相当于new一个新string对象
☆Object :是所有类型的父类型
标签:
原文地址:http://www.cnblogs.com/AssertionBird/p/5735069.html