由于计算机的内存被划分成一个字节一个字节的排列和存储方式,类似小学生的作文本一样,一个格子就好比是一个字节,每个格子都有一个唯一的编号,这个编号就是内存地址。在C#中为了更方便的操作计算机内存,于是为这些格子进行了比较合理的分类。比如:如果程序员每次只申请一个格子,那就把这个格子取名为byte类型,这个byte类型表示1个字节,范围0-255;但是C#还规定了另一种数据类型sbyte类型,它也只占一个格子,即1个字节,但是表示的范围不同,是-128至+127;byte和sbyte的共同点是都只能表示256个数据,因为都是8个bit位。

如果程序员操作的数据超过了256个数据,比如有一个数为1024,1024换算成二进制数为100 0000 0000,一共是11位,显示一个格子就装不下了,那就至少申请两个格子(节字)来存储这个数。在C#中哪些数据类型占2个字节呢?答案是short、ushort和char。由于char类型表示字符,所以我们可以用short或ushort类型来申请两个格子的内存空间,这样就可以将1024存储在内存中了。

依以类推,如果有一个更大的数据65536,刚好超过了ushort的0-65535的范围,因为65535换成二进制是1111 1111 1111 1111,一共16位,而65536换成二进制是1 0000 0000 0000 0000,一共17位,所以至少需要申请3个格子(字节)才装得下。C#中没有3个字节的数据类型,有占4个字节的数据类型,它们分别是int、uint、float,所以,要在内存中存储65536,用这三种数据类型去申请内存,都没问题。

结论,我们可以按数据的大小,申请不同长度的内存空间。但是,申请的空间在哪?我该如何在源代码找到它们呢?在C#中,申请内存时,不管长短,都必须使用一个标识符去代表这一段内存空间,这个标识符就是变量的由来

比如

byte age = 100;
 
 short temp1 = -256;
 
 ushort temp2 = 256;
 
 int money = 65536;

这里的age、temp1、temp2、money都是变量,它们各自有着不同的数据类型,代表它们在计算机内存中的不同的存储和操作方式。

下表中列出了C#中提供的基本数据类型

分类

类型

整数类型

byte、sbyte、short、ushort、int、uint、long、ulong

浮点类型

float、double

十进制类型

deceimal

布尔类型

bool

字符

char

字符串

string

引用类型

object

枚举类型

enum

动态类型

dynamic

其中string、object都是为引用类型,dynamic的类型与分配的数据相关,其余全部都是值类型。

定义变量的语法

<data_type> <variable_list>;

data_type表示数据类型,variable_list表示变量,可以一次性定义多个相同类型的变量,多个变量之间用逗号分隔。例如

byte a,b,c;
 
 int i,j,k;

可以在定义变量的同时给变量赋初值(即变量的初始化)。

byte a = 1, b = 2, c = 3;
 
 int i = 4, j = 5, k = 6;

关于变量取名的限制,在 C# 中,变量的命名需要遵循一些规则:

  • 变量名可以包含字母、数字和下划线。
  • 变量名必须以字母或下划线开头。
  • 变量名区分大小写。
  • 避免使用 C# 的关键字作为变量名。
  • 如果非要使用C#关键字作为变量名,则在前面加@符号。
byte @byte = 1;
 
 int @int = 2;