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

类:类型是一种模板,可以把类型想象成一个用来创建数据结构的模板。模板本身并不是数据结构,但它详细说明了该模板构造的对象的特征。

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

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

下面是.Net中预定义的类型:

堆和栈

对于.Net平台来说内存中使用堆栈的概念来存放数据。
栈是一个内存数组,是一个LIFO(last-in First-out 后进先出)的数据结构。
栈中存储的数据类型:值类型数据,引用类型的地址, 程序当前的执行环境,传递给方法的参数。
栈的特征:数据只能从栈的顶端插入和删除,把数据放到栈顶称为入栈(Push),从栈顶删除数据称为出栈(POP),因此可以把栈想像成一个水杯。

栈桢

当一个方法被调用时,在栈顶分配了一块内存用于保存一定数据与方法相关的数据项,这块内存叫方法的栈桢。
栈桢中存放的数据有:返回地址(就是方法退出时在哪里继续执行)、分配内存的参数(就是方法的值参数)、方法调用相关的其他各种管理数据项。
当方法被调用时,它的整个栈桢被压入栈中,方法退出时,它的整个栈桢从栈中弹出。弹出一个栈桢有时也称为释放栈。

与栈不同,堆是一块内存区域,在堆里可以分配大块的内存用于存储某类型的数据,堆里的内存可以任意顺序存入和移除。但不能的删除它们。
CLR的自动GC(Garbage Collector,垃圾收集器)在判断出程序的代码将不会再访问某数据项时(该引用类型没有任何引用时),自动清除无主的堆对象。

堆中一般存放的是引用类型的实际数据而栈存放的是值类型。

值类型:只需要一段单独的内存,用于存储实际的数据。(因栈是一个内存数据,存放一些占用空间比较小的数据)

引用类型:它需要两段内存,1存储实际的数据,它总是位于堆中,2是一个引用,指向数据在堆中的存放位置。

对于一个引用类型,其实例的数据部分始终存放在堆里。
对于一个值类型对象,或引用类型数据的引用部分可以存放在堆里,也可以存放在栈里,这依赖于实际环境。

类:以程序的角度来说程序的数据和功能组织为逻辑上相关的数据项和函数的封装集合,称之为类。
类:以现实的角度来说对某些事物共同性的抽象的描述。
类是一个能存储数据并执行代码的数据结构,类的每个实例都是不同的实体。

变量:当声明定义变量,其内部完成了两件事:1.给变量命名,并为它关联一种类型。2让编译器为它分配一块内存。
常量:(Const)通常是一个预定义简单类型或期组成的表达式。它还可以是Null引用,但它不能是某对象的引用,因为对象的引用是在运行时决定的。常量中是不能重新赋值的。

参数:
形参:是声明在方法的参数列表中而不是方法体中的本地变量。
实参:当代码调用一个方法时,形参的值必须在方法的代码开始执行之前初,初始化。
值参数:(传值)数据通过复制实参的值到形参的方式传递到方法。
引用参数:(传地址)使用Ref修饰符,实参必须是变量,在用作实参前必须被赋值。
输出参数: 使用out修饰符,用于方法体内把数据传出到调用代码,它们非常类似引用参数。每个输出参数在方法读取、返回之前必须被赋值,这就意味着参数的初始值是无关的。
参数数组:允许零个或多个实参对应一个特殊的形参,在一个参数列表中只能有一个参数数组,并且它必须是列表中最后一个。使用(Params)修饰符。

如果数组参数是值类型,那么值被复制,实参不受方法内部的影响。

如果数组参数是引用类型,那么引用被复制,实参引用的对象受到方法内部的影响。

转载于:https://www.cnblogs.com/xiao-feng/p/4746029.html

02-C#(基础)基本的定义和说明相关推荐

  1. JavaScript学习笔记02【基础——对象(Function、Array、Date、Math)】

    w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...

  2. javaweb(02) JavaScript基础知识

    javaweb(02): JavaScript基础知识 JavaScript简介 为什么出现JavaScript Javascript是什么 JavaScript和Java的关系? 就像卡巴斯基和巴基 ...

  3. Java基础-02(基础语法)

    Java基础-02(基础语法) 一 注释 加粗样式 注释用来解释和说明程序的文字,注释是不会被执行的. 1.1单行注释 //这是一条单行注释 public int i; 1.2多行注释 /* 这是 * ...

  4. MLIR: 编译器基础架构重定义

    MLIR: 编译器基础架构重定义 MLIR(多级中间表示)是语言(如 C)或库(如 TensorFlow)与编译器后端(如 LLVM)之间的中间表示 (IR) 系统.允许不同语言的不同编译器堆栈之间的 ...

  5. 深入浅出Pytorch:02 PyTorch基础知识

    深入浅出Pytorch 02 PyTorch基础知识 内容属性:深度学习(实践)专题 航路开辟者:李嘉骐.牛志康.刘洋.陈安东 领航员:叶志雄 航海士:李嘉骐.牛志康.刘洋.陈安东 开源内容:http ...

  6. Maven-学习笔记02【基础-Maven的安装和仓库种类】

    Java后端 学习路线 笔记汇总表[黑马程序员] 黑马程序员(腾讯微云)Maven基础讲义.pdf Maven-学习笔记01[基础-Maven基本概念] Maven-学习笔记02[基础-Maven的安 ...

  7. JQuery-学习笔记02【基础——JQuery选择器】

    Java后端 学习路线 笔记汇总表[黑马程序员] JQuery-学习笔记01[基础--JQuery基础]--[day01] JQuery-学习笔记02[基础--JQuery选择器] JQuery-学习 ...

  8. 1.2编程基础之变量定义、赋值及转换 10 Hello, World 的大小

    http://noi.openjudge.cn/ch0102/10/ #include <bits/stdc++.h> using namespace std; int main( voi ...

  9. 【数据库学习笔记】Day03 - SQL语言基础及数据库定义功能

    [数据库学习笔记]Day03 - SQL语言基础及数据库定义功能 〇.本文所用数据库表格: 一.关系运算: 关系运算,数学名词,基本运算有两类:一类是传统的集合运算(并.差.交等),另一类是专门的关系 ...

  10. 02.PyTorch基础操作(3-1 机器学习中的分类与回归问题-机器学习基本构成元素)

    @[TOC](02.PyTorch基础操作(3-1 机器学习中的分类与回归问题-机器学习基本构成元素)) 来自慕课网 一.3-1 机器学习中的分类与回归问题-机器学习基本构成元素

最新文章

  1. 从PyTorch到ONNX的端到端AlexNet
  2. oracle11g数据文件路径,oracle11g修改数据文件路径
  3. OSI模型数据链路层为什么需要分层?
  4. C#使用Objects Comparer进行对象比较
  5. [RabbitMQ]MQ 的选择
  6. 【Codeforces - 127D】Password(思维,二分+字符串Hash)
  7. Java单例模式的七种写法
  8. python数据框的横向贾总_[Spark][Python]DataFrame的左右连接例子
  9. 微信公众平台 获取用户列表
  10. session原理及实现共享
  11. jzoj3771. 【NOI2015模拟8.15】小 Z 的烦恼
  12. centos磁盘满了,查找大文件并清理
  13. 15、三数之和(python)
  14. 怎么用U盘安装ubuntu系统具体步骤图文详解
  15. 【MOOC-生物信息学-蛋白质结构预测与分析】(占坑)
  16. 太极发送卡片软件_QQxml卡片消息发送-防撤回等等安卓QQ插件Notified-支持太极框架 -发送QQ卡片消息...
  17. PyQt5 QTreeView树图
  18. .chm文件如何打开
  19. IE浏览器无法打开HTTPS解决办法
  20. 快速复制文件地址——无任何安装

热门文章

  1. 4.1 - 《机器学习基石》Home Work 1 Q.15-17
  2. AU更新 AUTOIT
  3. linux 会话 进程组 守护进程
  4. 解题报告 『占卜DIY(模拟)』
  5. python if条件判断语句
  6. 11.7动手动脑作业
  7. 具体解说Android的图片下载框架UniversialImageLoader之磁盘缓存(一)
  8. C++中容器的使用(二)
  9. Altium Designer(12): Draftsman
  10. java day24【Stream流、方法引用】