3.类型、存储和变量

本文详细介绍了C#编程中的类型系统,包括预定义类型、用户定义类型、栈和堆的概念以及值类型和引用类型的区别。重点讲解了变量的声明、初始化和存储,以及静态类型和dynamic关键字的使用,同时提到了可空类型在处理可能无效值时的作用。
摘要由CSDN通过智能技术生成

目录

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

 3.2 类型是一种模板

 3.3 实例化类型

 3.4 数据成员和函数成员

成员的类别

3.5 预定义类型

预定义类型补充

 3.6 用户定义类型

3.7 栈和堆

3.7.1 栈

栈的特征

 3.7.2 堆

3.8 值类型和引用类型

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

3.8.2 C#类型的分类

 3.9 变量

 3.9.1 变量声明

1.变量初始化语句

2. 自动初始化

​编辑 3.9.2 多变量声明

3.9.3 使用变量的值

 3.10 静态类型和dynamic关键字

3.11 可空类型


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

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

  • C#程序或DLL的源代码是一组一种或者多种类型声明。
  • 对于可执行程序,类型声明中必须有一个包含Main方法的类。
  • 命名空间是一种把相关的类型声明分组并命名的方法。既然程序是一组相关的类型声明,那么通常会吧程序声明在你创建的命名空间内部。

列如,下面是一个由3个类型声明组成的程序。这3个类型被声明在一个名称为MyProgram的新命名空间内部。

namespace MyProgram                 //声明新的命名空间
{

  DeclarationOfTypeA               //声明类型
  DeclarationOfTypeB              //声明类型


class C
 {

static void Main()
  {
  }
 }
}

 3.2 类型是一种模板

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

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

类型由下面的元素定义:

  • 名称;
  • 用于保存数据成员的数据结构;
  • 一些行为以及约束条件。

例如,图3-1阐述了short类型和int类型的组成元素。

 3.3 实例化类型

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

  • 通过实例化类型而创建的对象被称为类型的对象或类型的示例。这两个术语可以互换。
  • 在C#程序中,每个数据项都是某种类型的实例。这些类型可以是语言自带的,可以是BCL或者其他库提供的,也可以是程序员定义的。

图3-2阐述了两种预定义类型对象的实例化。

 3.4 数据成员和函数成员

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

其他的类型可以存储多个数据项。比如数组(array)类型就可以存储多个同类型的数据项。

这些数据项被称为数组元素。可以通过数字来引用这些元素,这些数字称为索引。数组将会在第12章讲述。

成员的类别

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

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

  • 数据成员 保存了与这个类的对象或作为一个整体的类相关的数据。
  • 函数成员 执行代码。函数成员定义类型的行为。

例如,图3-3列出了类型XYZ的一些数据成员和函数成员,它包括两个数据成员和两个函数成员。

3.5 预定义类型

C#提供了16种预定义类型,如图3-4所示。他们列在表3-1和表3-2中,其中包括13种简单类型和3种非简单类型。

所有定义类型的名称都由全小写的字母组成。预定义的简单类型包括以下3种。

  • 11种数值类型。
  1. 不同长度的有符号和无符号整数类型。
  2. 浮点数类型float和double。
  3. 一种称为decimal的高精度小数类型。与float和double不同,decimal类型可以准确地表示分数。decima类型通常用于货币计算。
  • 一种Unicode字符类型char。
  • 一种布尔类型bool.bool类型表示布尔值必须为true或false。

3种简单类型如下。

  • string 他是一个Unicode字符数组。
  • object 他是所有其他类型的基类。
  • dynamic 使用动态语言编写的程序集时使用。 

预定义类型补充

所有预定义类型都直接映射到底层的.N3.ET

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大西瓜写java、C#、.NET

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值