zoukankan      html  css  js  c++  java
  • 《C#图解教程》读书笔记之二:存储、类型和变量

    本篇已收录至《C#图解教程》读书笔记目录贴,点击访问该目录可获取更多内容。

    一、类型初窥:掀起你的盖头来

      (1)C程序是一组函数和数据类型,C++程序是一组函数和类,而C#程序是一组类型声明

      (2)类型是一种模板:模板本身不是数据结构,但它详细说明了由该模板构造的对象的特征;

      (3)C#提供了16种预定义类型:13种简单类型(数值类型:int,float,double,decimal等;非数值类型:bool,char),3种非简单类型(object,string,dynamic);

    所有的预定义类型都直接映射到底层的.NET类型。C#的类型名称其实就是.NET类型的别名,所以使用.NET的类型名称也符合C#语法,不过并不鼓励这样做。在C#程序中,应当尽量使用C#类型名称而不是.NET类型名称;

      (4)除了上面提到的16种预定义类型外,还可以创建自己的用户定义类型,一共有6种用户定义类型可以由用户自己创建,它们是:类(Class)、结构体(Struct)、数组(Array)、枚举(Enum)、委托(Delegate)和接口(Interface);

    二、存储双雄:栈和堆

      2.1 栈

      (1)栈是一个内存数组,是一个LIFO(Last In First Out,后进先出)的数据结构。

      (2)栈存储几种类型的数据:某些类型变量的值(主要是值类型);程序当前的执行环境;传递给方法的参数;

      (3)栈具有几种显著的特征:数据只能从栈顶插入和删除;将数据放到栈顶叫做入栈;将数据从栈顶移除叫做出栈

      2.2 堆

      (1)堆是一块内存区域,在堆里可以分配大块的内存用于存储某类型(主要是引用类型)的数据对象;与栈不同,堆里的内存能够以任意的顺序插入或移除;

      (2)堆中的数据不能显示地删除,CLR中的自动GC(Garbage Collector,垃圾收集器)会自动清除无主(判断程序代码是否将不再访问某数据项的时候)的堆内存对象。因此,我们可以骄傲地说:妈妈再也不用担心我的垃圾了

    三、值类型和引用类型:屌丝和高富帅

      (1)值类型:只需要一段单独的内存,用于存储实际的数据;TIP对于值类型,数据存放在栈里;(byte,int,long,float,double,struct,enum等)

      (2)引用类型:需要两段内存,第一段存储实际的数据,它总是位于堆中;第二段是一个引用,指向数据在堆中的存放位置;TIP对于引用类型,实际数据存放在堆里,而引用存放在栈里。(object,string,dynamic,class,interface,delegate,array)

      (3)引用类型对象的数据始终存放在,无论它们是值类型还是引用类型。

    四、本章思维导图

    附件

      思维导图(jpg、mmap以及pdf文件)下载:http://pan.baidu.com/s/1jGjzqnW

  • 相关阅读:
    ptunnel-简易使用
    socat-简易使用
    ncat-相关参数用法
    通过iodine简单实现dns隧道技术
    HTB-靶机-Safe
    HTB-靶机-Rope
    【mysql子查询&组合查询 05】
    【mysql 库表操作 07】
    【mysql插入&修改&删除 06】
    【mysql 连接查询 04】
  • 原文地址:https://www.cnblogs.com/edisonchou/p/3699198.html
Copyright © 2011-2022 走看看