C#-2 C#程序
一 C#程序是一组类型声明
C#程序或DLL的源代码是一组一种或多种类型声明。
对于可执行程序,类型声明中必须有一个包含Main方法的类。
命名空间是一种把相关的类型声明分组并命名的方法。是类在程序集中逻辑上的分组。
二 Main:程序的起始点
每个C#可执行程序必须带有Main方法。
每个C#程序的可执行起始点在Main中的第一条指令。
static void Main()
{
语句 . . .
}
三 C#类型
3.1 类型是一种模板,是一种活动的数据结构
类型是一个用来创建数据结构的模板。类描述了其代表的该类数据结构的特征。
类是一个能存储数据并执行代码的数据结构,包含数据成员和函数成员。
数据成员:存储与类或类的实例相关的数据。数据成员通常模拟该类所表示的现实事物的特性;
函数成员:它执行代码,通常会模拟类所表示的显示事物的功能和操作。

3.2 C#预定义类型
C#提供了16种预定义类型,包括13种简单类型和13种非简单类型;
13种简单类型包括:
- 11种数值类型:不同长度的有符号和无符号整数;浮点数类型float和double,decimal;
- 一种unicode字符类型char;
- 一种布尔类型bool;
3种非简单类型包括:
- string:一个unicode字符数组
- object:所有其他类型的基类
- dynamic: 使用动态语言编写程序集时使用


3.3 用户定义类型
- 类 class
- 结构 struct
- 数组 array
- 枚举 enum
- 委托 delegate
- 接口 interface
3.4 实例化类型,创建对象
从某个类型创建实际的对象,称为实例化该对象
四 栈stack和堆heap
程序运行时,它数据必须存储在内存中。一个数据项需要多大的内存,存储在何处及如何存储都取决于该数据项的类型。
运行中的程序使用两个区域来存储数据:栈和堆。
4.1 栈stack
栈是一个内存数组,是一个(Last-In First-out)后进先出的数据结构。
系统管理所有的栈操作。
栈存储几种类型的数据:
- 某些类型变量的值;
- 程序当前的执行环境;
- 传递给方法的参数。
栈的特征:
- 数据只能从栈的顶端插入或删除;
- 把数据放到栈顶称为入栈(push);
- 从栈顶删除数据成为出栈(pop);

4.2 堆heap
堆是一块内存区域,在堆里可以分配大块的内存用于存储某类型的数据对象。
堆里的内存可以以任意顺序存入和移除。
虽然程序可以在堆里保存数据,但并不能显示地删除他们。CLR的GC(Grabage Collector)在判断出程序的代码将不会再访问某数据项时,自动清除无主的堆对象。
五 值类型和引用类型
类型决定了对象在内存中的存储位置--栈或堆。
按照类型的对象在内存中存储方式的不同,类被分为值类型和引用类型:
- 值类型只需要一段单独的内存,用于存储实际的数据;
- 引用类型需要两段内存,第一段存储实际的数据,位于堆中,第二段是一个引用,指向数据在堆中的存放位置。

5.1 存储引用类型对象的成员
引用类型对象的数据部分始终存放在堆里。
值类型对象或引用类型数据的引用部分可以存放在堆里,也可以存放在栈里,取决于实际环境。

六 变量
变量是一个名称,表示程序执行时存储在内存中的数据。
C#提供了4种变量:
- 本地变量:在方法的作用域保存临时数据,不是类型的成员;
- 字段:保存和类型或实例相关的数据,是类型的成员;
- 参数:用于从一个方法到另一个方法传递数据的临时变量;
- 数组元素:同类数据项构成的有序集合的一个成员,可以为本地变量,也可以为类型的成员。
6.1 变量声明
变量声明定义了变量,并完成了两件事:
- 给变量命名,并为它关联一种类型;
- 让编译器为它分配一块内存。
C#-2 C#程序的更多相关文章
- JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议
软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- 微信小程序开发心得
微信小程序也已出来有一段时间了,最近写了几款微信小程序项目,今天来说说感受. 首先开发一款微信小程序,最主要的就是针对于公司来运营的,因为,在申请appid(微信小程序ID号)时候,需要填写相关的公司 ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- 微信应用号(小程序)开发IDE配置(第一篇)
2016年9月22日凌晨,微信宣布“小程序”问世,当然只是开始内测了,微信公众平台对200个服务号发送了小程序内测邀请.那么什么是“小程序”呢,来看微信之父怎么说 看完之后,相信大家大概都有些明白了吧 ...
- 编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议75~78)
建议75:集合中的元素必须做到compareTo和equals同步 实现了Comparable接口的元素就可以排序,compareTo方法是Comparable接口要求必须实现的,它与equals方法 ...
- 【探索】在 JavaScript 中使用 C 程序
JavaScript 是个灵活的脚本语言,能方便的处理业务逻辑.当需要传输通信时,我们大多选择 JSON 或 XML 格式. 但在数据长度非常苛刻的情况下,文本协议的效率就非常低了,这时不得不使用二进 ...
- 通过Jexus 部署 dotnetcore版本MusicStore 示例程序
ASPNET Music Store application 是一个展示最新的.NET 平台(包括.NET Core/Mono等)上使用MVC 和Entity Framework的示例程序,本文将展示 ...
- Code Review 程序员的寄望与哀伤
一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测 ...
- 使用 .NET WinForm 开发所见即所得的 IDE 开发环境,实现不写代码直接生成应用程序
直接切入正题,这是我09年到11年左右业余时间编写的项目,最初的想法很简单,做一个能拖拖拽拽就直接生成应用程序的工具,不用写代码,把能想到的业务操作全部封装起来,通过配置的方式把这些业务操作组织起来运 ...
随机推荐
- 报告指SpaceX估值已达到1000亿美元,埃隆马斯克以此回击其接受政府补贴的批判
SpaceX首席执行官埃隆-马斯克(Elon Musk)表示,名下的航天发射服务供应商市值已达到1000亿美元.该金额是根据上个月的评估报告确认的,标志着SpaceX在完成最新一轮融资,并筹集超过10 ...
- Linux 启动流程及相关知识
基础知识 linux系统的组成 内核(kerner) 根文件系统(rootfs) 内核提供操作系统的功能,根文件系统包含常用的一些工具,这些工具.这些工具的运行离不开glibc库文件. 程序:二进制程 ...
- .Net CLR GC 动态加载短暂堆阈值的计算及阈值超量的计算
前言: 很多书籍或者很多文章,对于CLR或者GC这块只限于长篇大论的理论性概念,对于里面的如何运作模式,却几乎一无所知.高达近百万行的CPP文件,毕竟读懂的没有几个.以下取自CLR.Net 6 Pre ...
- 日期字符串转为java.sql.Date
日期字符串转为java.sql.Date类型 问题引出:在将一个日期字符串通过sql语句,插入到数据表的日期字段(字段类型是DATE),时遇到一个问题,如何将一个日期字符串转成java.sql.Dat ...
- JS计算文本字符串字节长度和像素长度的方法
来源:js获取字符长度并计算px宽度 - [云]风过无痕 - 博客园 (cnblogs.com) <!DOCTYPE html> <html lang="en"& ...
- spring实体类(POJO)参数的赋值(form表单)原理
10.实体类(POJO)参数的赋值(form表单)原理 10.1.原理解析 测试用例 准备好两个实体类 public class Person { private String name; priva ...
- JUC源码学习笔记4——原子类,CAS,Volatile内存屏障,缓存伪共享与UnSafe相关方法
JUC源码学习笔记4--原子类,CAS,Volatile内存屏障,缓存伪共享与UnSafe相关方法 volatile的原理和内存屏障参考<Java并发编程的艺术> 原子类源码基于JDK8 ...
- 8. 利用Ansible快速构建MGR | 深入浅出MGR
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 目录 1. 安装ansbile 2. 配置ansible 3. 建立ssh信任 4. 测试ansible 5. 使用ans ...
- 最新MongoDB安装,学习笔记
MongoDB 导读 作者还在陆续更新中,如果喜欢作者的笔记,觉得可以学习到有帮助,后面会不断学习新内容,就点个关注吧,如果觉得文章有关注可以点个赞,谢谢: 官网:https://www.mongod ...
- 人人都能看懂的卡西欧fx991cnx玩机指南,手把手教你如何利用计算器的漏洞爆机
专业术语说明 你是VerB还是VerC 别人问你这个问题的时候不要慌,帮你看你的计算器是Ver几: 同时按住shift.7.开机键 9 5次shift 第一行后半句即是 紧接着可以顺便看看计算器的序列 ...