当前位置 博文首页 > 小小张自由—>张有博:C#编程基础——数据类型

    小小张自由—>张有博:C#编程基础——数据类型

    作者:[db:作者] 时间:2021-09-14 19:50

    目录

    值类型

    引用类型

    值类型与引用类型的关系

    ?区别

    “装箱”和“拆箱”


    ? ? ? C#语言是一种强类型语言,在程序中用到的变量、表达式和数值等都必须有类型。在C#中,数据类型分为两大类:一类是值类型、一类是引用类型。

    值类型

    所谓值类型就是包含一个实际数据的量。当定义一个值类型的变量是,C#会根据他所声明的类型,以堆栈方式分配一块大小相适应的存储区域给这个变量,随后对这个变量的读写操作就直接在这块内存区域进行。

    C#中的值类型包括:简单类型、枚举类型和结构类型。废话不多说,一张表胜过千言万语。

    类别描述
    值类型基本数据类型整型:int?
    长整形:long
    浮点型:float
    字符型:char
    布尔型:bool
    枚举类型枚举:enum
    结构类型结构:struct

    ?

    引用类型

    一个引用类型的变量不存储它们所代表的实际数据,而是存储实际数据的引用。引用类型包括类、接口、数组、object、string 。直接上图。

    注:object是C#中所有类型的根类,string类型是一个从object类直接继承的密封类型。

    类别描述
    引用类型基类:System.Object
    字符串:string
    自定义类:class
    接口接口:interface
    数组数组:int[],string[]

    ?

    值类型与引用类型的关系

    区别

    一、将一个值类型变量赋给另一个值变量类型时,将复制包含的值引用类型变量的赋值只复制对对象的引用,而不复制对象本身。

    二、C#中,值类型就分配在堆栈中,堆栈内存区域内保存着值类型的值,内存区域可以通过变量名来存取引用类型分配在堆中,对象分配在堆时,返回的是地址,这个地址被赋值给引用。

    感觉跟VB中按值传递和按址传递有点类似,只是感觉,具体如何接下来还得查

    三、值类型不可能派生出新的类型,值类型不可能包含null值。

    “装箱”和“拆箱”

    C#中用“装箱”和“拆箱”类实现值类型与引用类型之间的转换。

    一、“装箱”就是将值类型包装成引用类型的处理过程。

    二、“拆箱”它是将一个object类型转换成值类型。

    cs