值类型引用类型
内存分配地点分配在栈中分配在堆中
效率效率高,不需要地址转换效率低,需要进行地址转换
内存回收使用完后,立即回收使用完后,不是立即回收,等待GC回收
赋值操作进行复制,创建一个同值新对象只是对原有对象的引用
函数参数与返回值是对象的复制是原有对象的引用,并不产生新的对象
类型扩展不易扩展容易扩展,方便与类型扩展
public void Increment( int i )
{
i++;
}
public void Increment( ref int i )
{
i++;
}
public void AddValue( MyType typValue )
{
typValue.Count = typValue.Count + 15;
}
public class MyType:ICloneable
{
private int nCount = 0;
public int Count
{
set{ nCount = value;}
get{ return nCount;}
}
public MyType()
{}
public MyType( int Value)
{
nCount = Value;
}
#region ICloneable Members
public object Clone()
{
// TOD Add MyType.Clone implementation
return new MyType( nCount );
}
#endregion
}
<!--[if !supportLists]-->1. <!--[endif]-->这个类型是否主要为了数据存储;
<!--[if !supportLists]-->2. <!--[endif]-->是否只通过属性来访问对象的数据成员;
<!--[if !supportLists]-->3. <!--[endif]-->这个类型是否不会有子类型;
<!--[if !supportLists]-->4. <!--[endif]-->在程序处理的时候不会把这个类型对象通过多态来处理。