.c#程序是一组类型声明

※C#程序或DLL的源代码是一组一种或多种类型声明

※对于可执行程序,类型声明必须有一个包含Main方法类

※命名空间是一种把相关的类型声明分组并命名的方法。既然程序是一组相关的类型声明,那么通常会把程序声明在你创建的命名空间内部。

2.类型是一种模板

  既然c#程序是一组类型声明,那么学习C#就是学习如何创建和使用类型

※类型定义:想象成一个用来创建数据结构的模板

※类型有下面的元素定义:

【1】名称:

【2】用于保存数据成员的数据结构

【3】一些行为及约束条件

例如下面是Short类型和INT类型的组成元素

3.实例化类型

 从某个类型模板创建实际的对象称为实例化类型。

※ 通过实例化类型而创建的对象被称为类型的对象或类型的实例

※ 再C#中每个数据项都是某种类型的实例

4.数据成员和函数成员

   数据成员:保存了这个类的对象或作为一个整体的类相关的数据

   函数成员:执行代码,定义类型的行为

一下为XYZ的两个数据成员和两个函数成员

5.预定义类型

c#提供了16种预定义类型(13种简单类型和3种非简单类型)

※ 所有的预定义类型名称为全小写的字母组成

※  预定义类型的取值范围和对应.NET类型

6.用户自定义类型

以下6种类型可以用户自己创建

※ 类(class)

※ 结构 (struct)

※ 数组(array)

※ 枚举 (enum)

※ 委托 (delegate)

※ 接口 (interface)

类型通过类型声明创建(一单声明了类型就可以创建和使用这种类型的对象,就像他们是预定义类型一样)

使用用户定义类型两步过程:必须先声明类型,然后实例化该类型的对象。

7.栈和堆

运行程序使用两个内存区域来存储数据:栈和堆

栈:内存数组 是一个LIFO(Last in First out ,后进先出)的数据结构

存储以下类型数据:

※ 某些类型变量的值

※ 程序当前的执行环境

※传递给方法的参数

特征:

※ 数据只能从栈的订单插入和删除

※把数据放到栈顶称为入栈(push)

※从栈顶删除数据称为出栈(pop)

堆:一块内存区域,在堆里可以分配大块的内存用于存储某类型的数据对象,与栈不同,堆的内存能够以任意顺序存入和移除

不能显示得删除他们,CLR的垃圾收集器会判断出程序的代码将不会再访问某数据项时,自动清除堆对象。

8.值类型和引用类型

数据项的类型定义了存储数据需要的内存大小及组成该类型的数据成员,类型还决定了对象在内存中的存储位置---栈和堆

  类型被分为两类:值类型和引用类型

   值类型:只需要一段单独的内存,用于存储实际的数据

  引用类型:需要两段内存

                    第一段存储实际的数据,它总是位于堆中。

                    第二段是一个引用,指向数据在堆中存放的位置

  以下为存储示意图:

※引用类型对象的数据部分始终存放在堆里

※值类型的对象或引用类型数据的引用部分可以放在堆里也可以放在栈里

9.变量

变量:是一个名称,标识程序执行时存储在内存中的数据

※本地变量:在方法的作用域保存临时数据,不是类型成员

※字段:保存和类型或类型实例相关的数据,是类型的成员

※参数:用于从一个方法到另一个方法传递数据的临时变量,不是类型成员

※数组元素:(通常)同类数据项构成的有序集合的一个成员,可以为本地变量也可以为类型成员

 变量的声明:

※给变量命名,并为它关联一种类型;

※让编译器为它分配一块内存

※一个简单的声明 至少需要一个类型和一个名称   例:int var2   //无初始化语句的本地变量,在未赋值前不能使用

※变量初始化:   例:int var2 = 16;

※多变量声明: int var3=7,var4, var5=10;  //多变量声明必须类型相同

【卷土重来之C#学习笔记】(三) 类型 存储和变量的更多相关文章

  1. python学习笔记三:函数及变量作用域

    一.定义 def functionName([arg1,arg2,...]): code 二.示例 #!/usr/bin/python #coding:utf8 #coding=utf8 #encod ...

  2. 【卷土重来之C#学习笔记】(一)c#文章导航目录

    [卷土重来之C#学习笔记](一)c#文章导航目录 [卷土重来之C#学习笔记](二)c#编程概述 [卷土重来之C#学习笔记](三)类型.存储.对象 [卷土重来之C#学习笔记](四)类的基本概念 [卷土重 ...

  3. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  4. 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记

    回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...

  5. Liunx学习笔记(三) 文件权限

    一.文件权限 1.查看文件权限 (1)文件权限 在 Linux 中对于文件有四种访问权限,列举如下: 可读取:r,Readable 可写入:w,Writable 可执行:x,Execute 无权限:- ...

  6. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  7. Java IO学习笔记三

    Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...

  8. Typescript 学习笔记三:函数

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  9. muduo网络库学习笔记(三)TimerQueue定时器队列

    目录 muduo网络库学习笔记(三)TimerQueue定时器队列 Linux中的时间函数 timerfd简单使用介绍 timerfd示例 muduo中对timerfd的封装 TimerQueue的结 ...

  10. python3.4学习笔记(二) 类型判断,异常处理,终止程序

    python3.4学习笔记(二) 类型判断,异常处理,终止程序,实例代码: #idle中按F5可以运行代码 #引入外部模块 import xxx #random模块,randint(开始数,结束数) ...

随机推荐

  1. MariaDB 一些SQL语句的执行

    通过拼接的TAG_NAME字符串获取对应的TAG_ID字符串 形如: '丹药|练功流|轻松|学生|学院风' 查询结果:'10|35|36|40' SELECT GROUP_CONCAT(TAG_ID ...

  2. WPF中在摄像头视频上叠加控件的解决方案

    一.视频呈现 前段时间,在一个wpf的项目中需要实时显示ip摄像头,对此的解决方案想必大家都应该知道很多.在winform中,我们可以将一个控件(一般用panel或者pictruebox)的句柄丢给摄 ...

  3. 进阶Kotlin-常见关键字

    常见Kotlin 的关键字   一些常见的语法,我没有写注释. 前面基础的kotlin语法已经弄完了. 现在是高阶kotlin的语法啊. 包括,面向对象,lambad等. 其中面向对象的三大特点:封装 ...

  4. 《Servlet和jsp学习指南》 笔记1

    chapter 1 Servlet 4个java 包: 对于每一个http请求,Servlet请求都会创建一个ServletRequest实例,并将它传给Servlet的service方法.Servl ...

  5. 如何设置linux支持上传的文件中文不乱吗

    一.背景: 1.由于客户的需求,需要a链接打开的pdf文件,支持中文名称的 二.步骤 ①.查看当前编码 locale ②.编辑 vi  /etc/profile 打开后结尾处添加  export LA ...

  6. 基于Haar特征的Adaboost级联人脸检测分类器

    基于Haar特征的Adaboost级联人脸检测分类器基于Haar特征的Adaboost级联人脸检测分类器,简称haar分类器.通过这个算法的名字,我们可以看到这个算法其实包含了几个关键点:Haar特征 ...

  7. WCF进阶(二)——Contract

    前言 我和用户有个约定,这个契约上篇已经说过了,分为服务契约.操作契约.消息契约.数据契约等,说白了,你到底让我看到什么,你告诉我,或者说,我可以让你看到什么,你敢用吗?下面就说一些基础的,关于这个些 ...

  8. python中html解析

    import requestsfrom bs4 import BeautifulSoup url = "..." payload =...headers = None respon ...

  9. Phpstudy+WordPress安装详解

    Phpstudy+WordPress安装详解 1.安装phpStudy程序 将下载的phpStudy程序解压到某个分区的根目录中,第一次使用会提示你初始化一下: 之后在主控制界面点击启动即可. php ...

  10. if __name__ == '__main__'是什么意思?如何理解?看到一个很有用的解答

    小明.py 朋友眼中你是小明(__name__ == '小明'), 你自己眼中你是你自己(__name__ == '__main__'), 你编程很好, 朋友调你去帮他写程序(import 小明, 这 ...