c#语法复习总结(2)-数据类型
C#数据类型可以分值类型和引用类型。值类型,先说说一个概念 c#栈和堆.
一,栈和堆.
堆:在c里面叫堆,在c#里面其实叫托管堆。为什么叫托管堆,我们往下看。
栈:就是堆栈,因为和堆一起叫着别扭,就简称栈了。后进先出
托管堆不同于堆,它是由CLR(公共语言运行库(Common Language Runtime))管理,当堆中满了之后,会自动清理堆中的垃圾。所以,做为.net开发,我们不需要关心内存释放的问题。
数据结构堆栈:是一种后进先出的数据结构,它是一个概念,栈是一种后进先出的数据结构。而堆是一块内存区域,与栈不同,堆里的内存能够以任意顺序存入和移除
内存堆栈:存在内存中的两个存储区(堆区,栈区)。
栈区:存放函数的参数、局部变量、返回数据等值,由编译器自动释放
堆区:存放着引用类型的对象,由CLR释放
栈空间比较小,但是读取速度快
堆空间比较大,但是读取速度慢
二,值类型和引用类型
值类型。
值类型是在栈中分配内存,在声明时初始化才能使用,不能为null。
值类型超出作用范围系统自动释放内存。
主要由两类组成:结构,枚举(enum),结构分为以下几类:
1、整型(Sbyte、Byte、Char、Short、Ushort、Int、Uint、Long、Ulong)
2、浮点型(Float、Double)
3、decimal
4、bool
5、用户定义的结构(struct)
引用类型。
引用类型在堆中分配内存,初始化时默认为null。
引用类型是通过垃圾回收机制进行回收。
包括类、接口、委托、数组以及内置引用类型object与string。
注意: 但我们使用引用类型赋值时,其实是赋值的引用类型的引用,如果数组是一个值类型的数组,那么数组中直接存储值,如果是一个引用类型的数组(数组中存储的是引用类型),那么数组中存储的是引用(内存地址)
三 装箱 拆箱
由于C#中所有的数据类型都是由基类System.Object继承而来的,所以值类型和引用类型的值可以通过显式(或隐式)操作相互转换,而这转换过程也就是装箱(boxing)和拆箱(unboxing)过程。
装箱 是值类型到 object 类型或到此值类型所实现的任何接口类型的隐式转换。对值类型装箱会在堆中分配一个对象实例,并将该值复制到新的对象中。
拆箱 是从 object 类型到值类型或从接口类型到实现该接口的值类型的显式转换。
c#语法复习总结(2)-数据类型的更多相关文章
- 学习 JavaScript (三)核心概念:语法、变量、数据类型
JavaScript 的核心概念主要由语法.变量.数据类型.操作符.语句.函数组成,这篇文章主要讲解的是前面三个,后面三个下一篇文章再讲解. 01 语法 熟悉 JavaScript 历史的人应该都知道 ...
- javascript基础语法备忘录-变量和数据类型
//javascript基础语法备忘录-变量和数据类型 // 定义变量使用var关键字 后面跟变量名,不要使用eval 和arguments为变量名 var message = "hi&qu ...
- 前端学习笔记--js概述与基础语法、变量、数据类型、运算符与表达式
本篇记录js的概述与基础语法.变量.数据类型.运算符与表达式 1.概述与基础语法 2.变量 举例: 3.数据类型 4.运算符与表达式
- python基础语法(变量与数据类型)
python基础语法(变量与数据类型) 一.python变量 python中的变量不需要声明.每个变量在使用钱都需要赋值,变量赋值以后,该变量才会被创建 在python中,变量就是变量,它没有类型,我 ...
- sql语法复习:增删查改,各种数据库对象创建和函数使用
推荐工具:机子配置较低的话,可以装Gsql这个工具获得sql执行环境(可作为手册查看内置数据类型 函数和存储过程等) --之前数据库的东西接触不多,虽然基本的语法是了解,但不是很熟悉--最近项目一直在 ...
- c#语法复习总结(1)-浅谈c#.net
出来工作两年,发现自己进步太小了,工作能力是不能混的,想先从基础知识好好复习一下,再深入的学习一些高级框架和先进的理念.找回了博客园的密码账号,好好学习和总结.先从数据类型总结一下,无非就是值类型,引 ...
- JavaScript基础(一)之语法、变量、数据类型
1.JavaScript语法 ①区分大小写 ②弱类型变量 ③每行结尾分号可有可无 ④括号用于代码块 ⑤注释有两种方式(单行和多行注释) 2.JavaScrip变量 ①用Var声明,不要初始化 ②可以在 ...
- (4)PHP基本语法、变量、数据类型、运算符、流程控制
一.基本语法 1.PHP在网页里的结构 <?php ..... ?> 2.php的另一种格式(不推荐使用) <script language="php"> ...
- C#语法复习1
一.C#与.net框架 .net是语言无关的. 程序的执行流程: .net兼容语言的源代码文件 .net兼容编译器 程序集(公共中间语言(CIL)common intermediate languag ...
随机推荐
- Telegram Android源码问题汇总 持续更新
libtgvoip目录为空 git clone下来的工程中带有submodule时,submodule的内容没有下载下来,执行如下命令 cd Telegram git submodule update ...
- jar 冲突、class 冲突的检测脚本
思路很简单,解开war包,解开 jar 包,发现有同名 package.class 就报出来,不管是否“兼容” .. import zipfile import io from collections ...
- 多个python版本共存时的pip配置
两种方法来配置pip Func1: 1.1 找到python环境的安装包,将python.exe文件重命名,如:将python2.7版本的python.exe重命名为Python2.exe,将pyth ...
- UGUI在两个UI间坐标转换
在UGUI中,在两个Canvas之间进行坐标转换,从CanvasA下的坐标转换到CanvasB下. 或者在同一个界面下,从不同的节点下,转成相同的坐标. 函数定义 public static bool ...
- JS高阶---定时器相关
首先看几个问题: [主体] (1)定时器真的时定时执行的吗? 顺序验证: 测试结果: 接下来对上述代码做下修改,增加一个长时间工作的消耗,此时再来验证下定时器运行的精准度 结果如下: (2)定时器回调 ...
- docker 中,修改了 mysql 配置,如何重启 mysql?
直接重新启动容器: docker restart containerID/containerName
- USACO Score Inflation
洛谷 P2722 总分 Score Inflation https://www.luogu.org/problem/P2722 JDOJ 1697: Score Inflation https://n ...
- JDOJ 1162 是否闰年
1162: 是否闰年 https://neooj.com:8082/oldoj/problem.php?id=1162 题目描述 输入一个年份year,求year是否是闰年,如果是闰年输出L,否则输出 ...
- 在分页中,删除操作后,AJAX重载刷新当前页
需求 分页中,在 删除 和 编辑 完成后,AJAX重载刷新 当前页 ,而不是跳转到 第一页 实现步骤 添加两个的 input 控件,用来存储 当前页数 和 记录总条数(非必须,能有方法获取到这两个值即 ...
- Asp.Net Core 中的环境变量
Asp.Net Core 中的环境变量 软件开发环境在大多数软件开发组织中,我们通常具有以下开发环境. 开发环境--Development 演示(模拟.临时)环境--Staging 生产环境-- Pr ...