黑马程序员技术交流社区
标题:
预定义数据类型
[打印本页]
作者:
马毅
时间:
2012-12-19 22:34
标题:
预定义数据类型
一. 值类型和引用类型
值类型和引用类型的区别在于在内存中的存储方式,值类型存储在
堆栈
上,而引用类型存储在
托管堆
上,例如:
//因为int是值类型,所以一下代码会在内存中创建两个位置存储两个10
int i = 10;
int j =i;
复制代码
//而以下代码,由于Class是引用类型,所以只在内存中开辟了一块区域,而有两个(cc和ccc)指向它的引用
class Program
{
static int i = 10;
static void Main(string[] args)
{
C1 cc = new C1();
C1 ccc = cc;
}
}
class C1
{
int val;
}
复制代码
所以当有如下代码:
cc.val = 30;
ccc.val = 50;
复制代码
当执行上一句的时候,cc和ccc的val值都是30,下面一句执行之后都会变成50,这点注意区别。
值类型
sbyte
short
int
long
byte
ushort
uint
ulong
float
double
decimal
book
char
struct
引用类型
Object,string
需要注意的是bool,char还有结构体都是值类型,string是较为特殊的一种引用类型,所以string被分配在托管堆上,而不是堆栈上,但string类型一旦被创建,则不可更改,这点和其他引用类型不同,所以对其的修改都是创建一个新的string,而把对原来的引用更新到指向新的这个,例如:
string s1 = "abcde";
string s2 = s1;//此时si,s2指向同一个string
s2 = "ABCDE";//s2指向“ABCDE”,而此时si指向原来的“abcde”
复制代码
PS:注意,char类型有单引号引起来,而string是双引号
其他C#基础请看
这里
作者:
许庭洲
时间:
2012-12-20 19:21
值得学习ing!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2