C#数据类型

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

面试的时候会问到这么个比较基础的问题,在第一次遇到的时候并没有了解因此寄了,在专门了解之后才写下这篇,不过后面继续延伸的问题之后会补上。


一、类型区别

在讲之前我要先直接总结:C#的数据类型分为两类:①引用类型 分为类、接口、委托 ②值类型 分为结构体、枚举,所有类型都已Object为基础发展。

贴上刘铁猛老师的图

在面试期间主要考察点在于不同类型的存储位置以及区别和作用

值类型为直接分配一个值的类型,如整型、浮点、布尔、枚举、可用sizeof来计算大小

引用类型不包括存储实际变量数据但包含变量引用,可以理解为是他指向一块内存地址,类型为object dynamic和string

先做总结:值类型为实际的值,引用类型为指向一块地址(地址里面包含啥不管)

值类型存储实际的数,如一般的数据类型都有存储,数据来自教学文档 

引用类型的变量是对其数据变量/对象的引用,该类型能够同时引用同一对象,在理解上更像是指针,声明引用类型分别为 类、接口、委托,也提供了内置引用类型 dynamic、object、string在使用中引用类型更像是包着物体的外包装

二、存储地址

值类型:

数据的存储遵循这一个规律:临时的值存在栈中,较大自己申请的值用在堆中。因为栈的数据系统会自己帮我们处理,但是在这里有些许不同,值类型的数据存储要看是在什么位置,在方法里分配到栈,在类里分配到堆,其原因是因为作为方法里的变量为局部变量,而作为类成员的话就为类的一部分需要长久存储因此会存在堆里.

引用类型:

引用类型需要两段内存,表明两种不同情况:

①实际存储的数据,会存在堆中

②作为引用,指向存储在堆中的实际数据

先说第二种,作为引用指向的地址可以被复制,所以可能会有多个引用类型数据指向同一个地址,因此存储在堆中

第一种在引用类型中所包含的数据一般为值类型,但具备长久存储和大容量的需求所以会放在堆内。


总结

C#数据类型分为两种,①引用类型、②值类型,都源自object类型发展,值类型作为临时变量生存时间短,引用类型不包含存储中的实际变量,只是对对象的引用(指向特定存储的内存位置)

值类型在作为临时变量则存于栈中,随系统自动生成和销毁,但作为对象数据时会存于堆中,引用类型作为引用对象存于栈中,但其对象的数据则会存在堆中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值