类型(值类型和引用类型)

值类型存储的是直接包含他们的数据,引用类型存储的是对于对象的引用。值类型存储于堆栈上,引用类型存储于托管堆上,由gc控制回收(当实例大小小于85000字节时在gc堆上,大于850000字节在loh堆上)。

值类型有:数值类型:int,float,char。。。。

struct结构类型,enum枚举类型,可空类型,bool类型

引用类型有:string(String的别名)类型,类class类型,interface接口,delegate委托类型,数组类型(array),object对象类型

嵌套类型:

1.引用类型中包含了值类型:实例化引用类型,引用类型分配在堆栈上,值类型分配在托管堆中。

2.值类型包含引用类型:实例化值类型,值类型保存在堆栈上,引用类型分配在托管堆中

自己测试的代码:

// class DataTypeAndRefType
// {
// public int value = 0;
// }
// class test
// {
// static void Main()
// {
// int val1 = 0;
// int val2 = val1;
// val2 = 123;
// DataTypeAndRefType ref1=new DataTypeAndRefType();
// DataTypeAndRefType ref2 =ref1;
// ref2.value = 123;
// Console.WriteLine("{0},{1}",val1,val2);
// Console.WriteLine("{0},{1}",ref1.value,ref2.value);
// Console.Read();
// }
//}

测试常用类型:

class AllType
{
public enum color
{
red, bule, green
}
public struct point
{
public int x, y;
}
public interface ibase
{
void f();
}
public interface iderived : ibase
{
void g();
}
public class a
{
public void h()
{
Console.WriteLine("a.h");
}
}
public class b : a, iderived
{
public void f() {
Console.WriteLine("b.f impl of iderived.f");
}
public void g()
{
Console.WriteLine("b.g impl of ibase.g");
}
new public void h()
{
Console.WriteLine("b.h override of a.h");
}
}
public delegate void emptydelegate();
static void Main()
{
b bb = new b();
bb.f();
bb.g();
bb.h();
a aa = new a();
aa.h();
Console.Read();
}

}

详见https://www.cnblogs.com/zxtceq/p/5219834.html

原文地址:https://www.cnblogs.com/javazyh/p/9554705.html