C# 类型存储和变量

Posted evilsnake

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 类型存储和变量相关的知识,希望对你有一定的参考价值。

  如果广泛地描述C和C++程序的源代码的特征,可以说C程序是一组函数和数据类型,C++程序是一组函数和类,然而C#程序是一组类型声明。

  既然C#程序就是一组类型声明,那么学习C#就是学习如何创建和使用类型。所以需要做的第一件事情就是了解什么是类型。

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

  类型由下面的元素定义:

  . 名称

  . 用于保存数据成员的数据结构

  . 一些行为及约束条件

 

  实例化类型

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

  数据成员和函数成员

    像short、int和long等这样的类型称之为简单类型,这种类型只能存储一个数据项。

    其他类型可以存储多个数据项,比如数组(array)类型就可以存储多个同类型的数据项。这些数据项称为数组元素。

    然而另外一些类型可以包含许多不同类型的数据项(类)。这些类型中的数据项个体称为成员,并且与数组中使用数字类引用成员不同,这些成员有独特的名称。

    有两种成员:数据成员和函数成员。

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

    . 函数成员 执行代码。函数成员定义类型的行为

  预定义类型

  C#提供了16种预定义类型。

  如图

  

需要注意的是:

bool类型表示布尔值并且必须为true或false.

decimal是高精度小数类型,与float和double不同,decimal类型可以准确地表示分数,decimal类型常用语货币的计算。

非简单类型

object::所有其他类型的基类,包括简单类型

string::0个或多个Unicode字符所组成的序列

dynamic::在使用动态语言编写的程序集时使用。

用户定义类型

1:类类型(class);

2: 结构类型(struct)

3:数组类型(array)

4:枚举类型(enum)

5:委托类型(delegate)

6:接口类型(interface)

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

例如:

预定义类型: int  a;

      float b;

用户自定义类型:

堆和栈

程序运行的时候,他它数据必须存储在内存中,一个数据项需要多大的内存,存储在什么地方以及如何存储都依赖于该数据的类型。

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

栈:

栈是一个内存数组,是一个后进先出的数据结构,栈存储几种类型的数据:

1:某种类型变量的值

2:程序当前的执行环境

3:传递给方法的参数

栈的特征:

.1 数据只能从栈的顶端插入和删除、

.2 把数据放到栈顶称为入栈

.3 从栈顶删除数据称为出栈

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

虽然程序可以在堆里保存数据,但并不能显示地删除它们。CLR的自动GC(Carbage collector,垃圾收集器)在判断出程序的代码将不会再访问某种数据项的时候,自动清除无主的堆对象。

如下图所示

变量

这里不再多介绍了。

 

如有雷同,请联系我。

以上是关于C# 类型存储和变量的主要内容,如果未能解决你的问题,请参考以下文章

C#基础-变量与常量

从存储在其他变量 C# 中的类型转换变量

C# “值类型“和“引用类型“在内存的分配

C# “值类型“和“引用类型“在内存的分配

值类型何时存储在堆栈(C#)中?

类型存储和变量