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)-数据类型的更多相关文章

  1. 学习 JavaScript (三)核心概念:语法、变量、数据类型

    JavaScript 的核心概念主要由语法.变量.数据类型.操作符.语句.函数组成,这篇文章主要讲解的是前面三个,后面三个下一篇文章再讲解. 01 语法 熟悉 JavaScript 历史的人应该都知道 ...

  2. javascript基础语法备忘录-变量和数据类型

    //javascript基础语法备忘录-变量和数据类型 // 定义变量使用var关键字 后面跟变量名,不要使用eval 和arguments为变量名 var message = "hi&qu ...

  3. 前端学习笔记--js概述与基础语法、变量、数据类型、运算符与表达式

    本篇记录js的概述与基础语法.变量.数据类型.运算符与表达式 1.概述与基础语法 2.变量 举例: 3.数据类型 4.运算符与表达式

  4. python基础语法(变量与数据类型)

    python基础语法(变量与数据类型) 一.python变量 python中的变量不需要声明.每个变量在使用钱都需要赋值,变量赋值以后,该变量才会被创建 在python中,变量就是变量,它没有类型,我 ...

  5. sql语法复习:增删查改,各种数据库对象创建和函数使用

    推荐工具:机子配置较低的话,可以装Gsql这个工具获得sql执行环境(可作为手册查看内置数据类型 函数和存储过程等) --之前数据库的东西接触不多,虽然基本的语法是了解,但不是很熟悉--最近项目一直在 ...

  6. c#语法复习总结(1)-浅谈c#.net

    出来工作两年,发现自己进步太小了,工作能力是不能混的,想先从基础知识好好复习一下,再深入的学习一些高级框架和先进的理念.找回了博客园的密码账号,好好学习和总结.先从数据类型总结一下,无非就是值类型,引 ...

  7. JavaScript基础(一)之语法、变量、数据类型

    1.JavaScript语法 ①区分大小写 ②弱类型变量 ③每行结尾分号可有可无 ④括号用于代码块 ⑤注释有两种方式(单行和多行注释) 2.JavaScrip变量 ①用Var声明,不要初始化 ②可以在 ...

  8. (4)PHP基本语法、变量、数据类型、运算符、流程控制

    一.基本语法 1.PHP在网页里的结构 <?php ..... ?> 2.php的另一种格式(不推荐使用) <script language="php"> ...

  9. C#语法复习1

    一.C#与.net框架 .net是语言无关的. 程序的执行流程: .net兼容语言的源代码文件 .net兼容编译器 程序集(公共中间语言(CIL)common intermediate languag ...

随机推荐

  1. NoSuchMethodError 常见原因及解决方法

    相 关 阅 读 导读 『StabilityGuide』是阿里多位阿里技术工程师共同发起的稳定性领域的知识库开源项目,涵盖性能压测.故障演练.JVM.应用容器.服务框架.流量调度.监控.诊断等多个技术领 ...

  2. 处理 JS中 undefined 的 7 个技巧

    摘要: JS的大部分报错都是undefined... 作者:前端小智 原文:处理 JS中 undefined 的 7 个技巧 Fundebug经授权转载,版权归原作者所有. 大约8年前,当原作者开始学 ...

  3. xshell5运行hadoop集群

    ---恢复内容开始--- 1.CentOS主机配置 在配置Hadoop过程中,防火墙必须优先关闭SELinux,否则将影响后续Hadoop配置与使用,命令如下: # 查看 “系统防火墙” 状态命令 s ...

  4. Django 练习班级管理系统六 -- 编辑老师列表

    修改 views.py @auth def edit_teacher(request, nid): if request.method == "GET": obj = models ...

  5. 构建Apache Web服务器

    Apache 是世界使用排名第一的 Web 服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的 Web 服务器端软件之一.Apache工作模式有多种,其 ...

  6. unsigned int数据类型最大数

    #include <stdio.h> int main() { unsigned , b = ; ) { a++; } printf( ); unsigned ; do { n = n / ...

  7. LG4171/BZOJ1823 「JSOI2010」满汉全席 2-SAT

    问题描述 LG4171 BZOJ1823 题解 显然,每个评委对每个材料的满式/汉式要求是对\(n\)个元素的\(0,1\)取值限制. 显然想到\(\mathrm{2-SAT}\) 于是就可以切掉了. ...

  8. IAR环境搭建

    工具下载:https://pan.baidu.com/s/1nwv0RVz 第一步:右键点击EW8051-EV-8103-Web.exe,使用管理员权限运行. 第二步:我们运行之后只要一直Next下去 ...

  9. 解决WIN10左侧盘符顺序问题

    Windows Registry Editor Version 5.00 [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ ...

  10. Linux性能优化实战学习笔记:第五十七讲

    一.上节回顾 上一节,我带你一起梳理了常见的性能优化思路,先简单回顾一下.我们可以从系统和应用程序两个角度,来进行性能优化. 从系统的角度来说,主要是对 CPU.内存.网络.磁盘 I/O 以及内核软件 ...