C#-2 C#程序

  • A+
所属分类:.NET技术
摘要

C#程序或DLL的源代码是一组一种或多种类型声明。
对于可执行程序,类型声明中必须有一个包含Main方法的类。
命名空间是一种把相关的类型声明分组并命名的方法。是类在程序集中逻辑上的分组。



一 C#程序是一组类型声明

C#程序或DLL的源代码是一组一种或多种类型声明。
对于可执行程序,类型声明中必须有一个包含Main方法的类。
命名空间是一种把相关的类型声明分组并命名的方法。是类在程序集中逻辑上的分组。

二 Main:程序的起始点

每个C#可执行程序必须带有Main方法。
每个C#程序的可执行起始点在Main中的第一条指令。

static void Main() {     语句 . . . } 

三 C#类型

3.1 类型是一种模板,是一种活动的数据结构

类型是一个用来创建数据结构的模板。类描述了其代表的该类数据结构的特征。
类是一个能存储数据并执行代码的数据结构,包含数据成员和函数成员。
数据成员:存储与类或类的实例相关的数据。数据成员通常模拟该类所表示的现实事物的特性;
函数成员:它执行代码,通常会模拟类所表示的显示事物的功能和操作。
C#-2 C#程序

3.2 C#预定义类型

C#提供了16种预定义类型,包括13种简单类型和13种非简单类型;

13种简单类型包括:

  • 11种数值类型:不同长度的有符号和无符号整数;浮点数类型float和double,decimal;
  • 一种unicode字符类型char;
  • 一种布尔类型bool;

3种非简单类型包括:

  • string:一个unicode字符数组
  • object:所有其他类型的基类
  • dynamic: 使用动态语言编写程序集时使用
    C#-2 C#程序
    C#-2 C#程序

3.3 用户定义类型

  • 类 class
  • 结构 struct
  • 数组 array
  • 枚举 enum
  • 委托 delegate
  • 接口 interface

3.4 实例化类型,创建对象

从某个类型创建实际的对象,称为实例化该对象

四 栈stack和堆heap

程序运行时,它数据必须存储在内存中。一个数据项需要多大的内存,存储在何处及如何存储都取决于该数据项的类型。
运行中的程序使用两个区域来存储数据:栈和堆。

4.1 栈stack

栈是一个内存数组,是一个(Last-In First-out)后进先出的数据结构。
系统管理所有的栈操作。
栈存储几种类型的数据:

  • 某些类型变量的值;
  • 程序当前的执行环境;
  • 传递给方法的参数。

栈的特征:

  • 数据只能从栈的顶端插入或删除;
  • 把数据放到栈顶称为入栈(push);
  • 从栈顶删除数据成为出栈(pop);
    C#-2 C#程序

4.2 堆heap

堆是一块内存区域,在堆里可以分配大块的内存用于存储某类型的数据对象。
堆里的内存可以以任意顺序存入和移除。
虽然程序可以在堆里保存数据,但并不能显示地删除他们。CLR的GC(Grabage Collector)在判断出程序的代码将不会再访问某数据项时,自动清除无主的堆对象。

五 值类型和引用类型

类型决定了对象在内存中的存储位置--栈或堆。
按照类型的对象在内存中存储方式的不同,类被分为值类型和引用类型:

  • 值类型只需要一段单独的内存,用于存储实际的数据;
  • 引用类型需要两段内存,第一段存储实际的数据,位于堆中,第二段是一个引用,指向数据在堆中的存放位置。
    C#-2 C#程序

5.1 存储引用类型对象的成员

引用类型对象的数据部分始终存放在堆里。
值类型对象或引用类型数据的引用部分可以存放在堆里,也可以存放在栈里,取决于实际环境。
C#-2 C#程序