C#预定义数据类型(值类型和引用类型详解)
C#认可度基本预定义类型并没有内置于语言中,而是内置于.NET Framework中。例如:声明一个int
类型的数据时,声明的实际上是.NET结构System.Int32的一个实例。
C#把数据类型分为两种
一、值类型
表示基本数据类型
二、引用类型
1、object,在C#中,object就是最终的父类型,所有内在的和用户定义的类型都从它
派生而来。可以用object绑定任何子类型的对象,而且object类型执行许多基本
的一般用途方法。
2、string,如:
string str1 = "hello";
string str2 = "world";
string str3 = str1+str2;
尽管这是一个值类型的赋值,但是string是一个引用类型。String对象保留在堆上,
而不是堆栈上。因此,把一个字符串变量赋给另外一个字符串时,会得到对内存中
同一个字符串的两个引用。但是,string与引用类型在常见的操作上有一些区别。
例如,修改其中一个字符串,就会创建一个全新的string对象,而另一个字符串没有
改变。
C#有15个预定义类型,其中13个值类型,2个引用类型(string和object)。
从概念上讲,其区别是值类型是直接存储其值,而引用类型存储对值得引用。
存储在内存的不同地方:
值类型存储在堆栈中,而引用类型存储在托管堆上。
类型的数据时,声明的实际上是.NET结构System.Int32的一个实例。
C#把数据类型分为两种
一、值类型
表示基本数据类型
二、引用类型
1、object,在C#中,object就是最终的父类型,所有内在的和用户定义的类型都从它
派生而来。可以用object绑定任何子类型的对象,而且object类型执行许多基本
的一般用途方法。
2、string,如:
string str1 = "hello";
string str2 = "world";
string str3 = str1+str2;
尽管这是一个值类型的赋值,但是string是一个引用类型。String对象保留在堆上,
而不是堆栈上。因此,把一个字符串变量赋给另外一个字符串时,会得到对内存中
同一个字符串的两个引用。但是,string与引用类型在常见的操作上有一些区别。
例如,修改其中一个字符串,就会创建一个全新的string对象,而另一个字符串没有
改变。
C#有15个预定义类型,其中13个值类型,2个引用类型(string和object)。
从概念上讲,其区别是值类型是直接存储其值,而引用类型存储对值得引用。
存储在内存的不同地方:
值类型存储在堆栈中,而引用类型存储在托管堆上。