C#的数据类型分为两种,值类型和引用类型。
这里是我从.net2.0 书籍得到微软对其的具体分类 ----(.net framework 2.0 程序设计)
有一点值得大家注意,所有的数据类型都直接或间接继承了Object的类型。
string 类型是直接继承了Object
所有值类型直接继承了ValueType 同时也继承了Object (笔者无法对其继续深入了) 这是一个细节,大家切记
那两种类型是如何在内存分配呢?
1.值类型的变量是直接存储数据,实例是被分配在栈中的,特性 永远不能为空!
2.引用类型的变量存储的是数据在内存的地址,而实例是被分配在可以进行垃圾回收的堆中的!引用类型的变量可以为空
具体的,来讲讲引用类型的一些特点吧
1.一份数据可以被多个变量引用,这样做节省资源,但是数据源只有一份,都数据源进行修改,就会导致有引用该数据的变量都有变化。
我们直接来代码吧
例子1
class Program
{
static void Main(string[] args)
{
int i = null;
string str = null;
}
}
大家都知道 int i =null ;这样声明是错的,具体原因是什么呢,其实就值类型永远不能为空,这个特性
string str =null 这样声明就是对的呢,是因为应用类型是可以为空 。
例子2
static void Main(string[] args)
{
string str1 = "";
string str = null;
}
这两种声明有什么区别呢 第一张其实在内存已经开辟了空间存放变量,而第二中只是声明一个内存地址 没有去开辟内存空间
笔者先谈这么多,下次继续