您的位置:首页 > 其它

值类型、引用类型和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类型的实际值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息