值类型、引用类型和string详解之一(共三)
2017-01-07 22:05
176 查看
仅为个人理解,如有错误,请指正。。。。。
之一:说明引用类型与值类型
之二:说明值传递和引用传递
之三:讲解string并对string常用函数进行说明。
string之所以拿出来说,是string具有不可变性,也就是string的每一次操作都是开辟新的内存进行存储。
简单说明值类型与引用类型:
值类型:
1.值类型继承自System.ValueType类型。
2.值类型包含:内置类型、结构、枚举。
3.内置类型:int double decimal bool char struct enum。
4.值类型存储与栈中,栈中存储的是实际的值,变量名用来标记内存位置。
引用类型:
1.引用类型全部继承自System.Object类型。
2.值类型包含:指针类型、接口类型(interface)、自描述类型(数组、类(用户定义类、已装箱的值类型、委托))
3.具体:string(特殊)、数组、自定义类型、委托
4.引用类型存储与堆中,堆中存储的是实际的值,变量名实际标记的为栈中地址,栈中实际存储的是堆中地址。
具体方式查看步骤
通过VS中即时窗口可以很直观的看到。
举例:
1.在Main函数中,创建int类型变量和string类型变量并赋值。
int number=10;
string str="测试内存";
2.设置断点,断点位置必须在变量声明并赋值之后。
3.执行到断点,打开即时窗口输入 &number 后,再次输入&str
4.即时窗口输出内容如下:
第一行: &number
第二行:
0x0972ea34
第三行:
number: 10
第四行: &str
第五行: 0x0972ea38
第六行: str: 0x02db94b0
5.说明:
5.1值类型:
第二行:说明number标记的内存地址为0x0972ea34,该地址为栈内存。
第三行:说明number这个变量对应的内存地中实际的存储时10这个值。
5.2引用类型:
第五行:说明str标记的内存地址为0x0972ea38,改内存地址为栈内存。
第六行:说明str这个变量对应的内存中实际存储的时0x02db94b0这个内存地址,这个内存地址实际为堆中的地址,存储是string类型的实际值。
之一:说明引用类型与值类型
之二:说明值传递和引用传递
之三:讲解string并对string常用函数进行说明。
string之所以拿出来说,是string具有不可变性,也就是string的每一次操作都是开辟新的内存进行存储。
简单说明值类型与引用类型:
值类型:
1.值类型继承自System.ValueType类型。
2.值类型包含:内置类型、结构、枚举。
3.内置类型:int double decimal bool char struct enum。
4.值类型存储与栈中,栈中存储的是实际的值,变量名用来标记内存位置。
引用类型:
1.引用类型全部继承自System.Object类型。
2.值类型包含:指针类型、接口类型(interface)、自描述类型(数组、类(用户定义类、已装箱的值类型、委托))
3.具体:string(特殊)、数组、自定义类型、委托
4.引用类型存储与堆中,堆中存储的是实际的值,变量名实际标记的为栈中地址,栈中实际存储的是堆中地址。
具体方式查看步骤
通过VS中即时窗口可以很直观的看到。
举例:
1.在Main函数中,创建int类型变量和string类型变量并赋值。
int number=10;
string str="测试内存";
2.设置断点,断点位置必须在变量声明并赋值之后。
3.执行到断点,打开即时窗口输入 &number 后,再次输入&str
4.即时窗口输出内容如下:
第一行: &number
第二行:
0x0972ea34
第三行:
number: 10
第四行: &str
第五行: 0x0972ea38
第六行: str: 0x02db94b0
5.说明:
5.1值类型:
第二行:说明number标记的内存地址为0x0972ea34,该地址为栈内存。
第三行:说明number这个变量对应的内存地中实际的存储时10这个值。
5.2引用类型:
第五行:说明str标记的内存地址为0x0972ea38,改内存地址为栈内存。
第六行:说明str这个变量对应的内存中实际存储的时0x02db94b0这个内存地址,这个内存地址实际为堆中的地址,存储是string类型的实际值。
相关文章推荐
- js类型转换与引用类型详解(Boolean_Number_String)
- js类型转换与引用类型详解(Boolean_Number_String)
- 详解C#引用类型String
- js类型转换与引用类型详解(Boolean_Number_String)
- string:值类型?引用类型?[转]
- 细说引用类型string StringBuilder class的特点
- DLL 参数为string类型详解
- 关于string是值类型还是引用类型- -
- 关于string是值类型还是引用类型
- C#预定义数据类型(值类型和引用类型详解)
- string:值类型?引用类型?[转]
- 理解:引用类型,string类型(字符串驻留),值类型
- string:值类型?引用类型?[转]
- 理解C# String类型:特殊的引用类型
- C#学习笔记:值类型与引用类型(详解)
- Java中的String数据类型 详解
- 关于string是值类型还是引用类型
- 详解Java的String 类型
- C#参考 : 值类型和引用类型的区别 (深入详解)
- 怎么解决asp.net错误:缺少using 指令或程序集引用 找不到类型或命名空间名称StringBuilder&using的用法