C#中的数据类型

C#是一种强类型语言,无论是变量、常量,还是方法的参数、返回值,都需要指定相应的数据类型。从某种意义上来说,数据类型就像数据结构的模板,它包含了很多信息:

  1. 一种数据类型所需要的内存空间;

  2. 该数据类型的取值范围,即它可以表示的最大值和最小值;

  3. 它所继承的基类信息;

  4. 运行时它在内存中存储的位置;

  5. 该数据类型本身所支持的操作,比如数字型支持四则运算;

  6. 它自身的成员,如方法、字段、事件,等等。

编译器依赖数据类型来实现类型安全,比如可以对数字型变量实施加减操作,但无法对布尔型执行同样的操作。另外,编译器将数据类型作为元数据放入编译生成的程序集中,进一步保证程序中运行时依赖相应的数据类型进行正确的内存分配和回收,进一步保证类型安全性。

.NET框架已经帮我们定义了大量的基本数据类型,对应表4-2,我们可以看到C#的数据类型和.NET框架数据类型的对应关系,事实上,C#的内置类型关键字只不过是CTS中预定义类型的一个别名而已,它们是等价的,如表4-2所示。

在表4-2中,除了object和string类型外,其他类型都称为简单类型。

因为C#内置类型的关键字就是CTS类型的别名,因此在使用时它们可以互换,而使用CTS类型的别名显然要省事得多,如代码清单4-7所示。

代码清单4-7 C#类型关键字和CTS类型的关系

int Age = 10;
System.Int32 Count = 20;

我们知道,CTS中的类型只有值类型和引用类型两种,包括.NET框架预定义的BCL类库和我们自定义的类、接口等,如图4-4所示。

下面我们从值类型和引用类型两方面来分析C#语言的内置类型。

1. 内置的值类型

首先通过一幅图来看看C#语言中的值类型包含哪些类型,如图4-5所示。

由图4-5可以看出,值类型主要由两大类型组成:结构类型和枚举类型。而我们平时常用的数值型、布尔型都是结构类型,其中数值型又包括:整型、浮点型和十进制型,下面将分别介绍。

正确的使用类型是很重要的,我们先通过表4-3了解整型所包含的类型,以及它们的取值范围和长度信息,然后对每个类型逐一介绍。

(1)sbyte

sbyte关键字表示整数数据类型。

声明和使用sbyte类型的变量:

sbyte val = 100;
(2)byte

byte关键字表示整数数据类型。

声明和使用byte类型的变量:

byte val = 100;
(3)char

char关键字用于声明一个Unicode字符。Unicode字符是16位字符,用于表示世界上已知的绝大多数书面语言。

char关键字的使用举例如下:

char[] chars = new char[4];
chars[0] = 'X'; // 字符
chars[1] = '\x0058'; // 16进制
chars[2] = (char)88; // 从数值型转换
chars[3] = '\u0058'; // Unicode

foreach (char c in chars)
{
    Console.Write(c + " ");
}

上述代码的输出结果为:X X X X

(4)short

short关键字表示整数数据类型。

short的用法如下:

short val = 12345;
(5)ushort

ushort关键字表示整数数据类型。

ushort的用法如下:

ushort ushortVal = 65535;
(6)int

int关键字表示整数数据类型。

int的用法如下:

int iVal = 65535;
(7)uint

uint关键字表示整数数据类型。

uint的用法如下:

uint theUint = 967295;
(8)long

long关键字表示整数数据类型。

long的声明有如下几种方式:

long longValue1 = 4294967296;
long longValue2 = 4294967296L; // 后缀'L'
long longValue3 = 4294967296l; // 后缀'l',和大写'L'等价

注意虽然后缀使用大写的"L"和小写的"l"均可,但小写的"l"易和数字"1"混淆,因此为了不引起混淆,建议使用大写的"L"做后缀。

(9)ulong

ulong关键字表示整数数据类型。

ulong的用法如下:

ulong uLong = 9223372036854775808;

则其类型为以下类型中可表示其值的第一个类型:intuintlongulong。在上面的示例中,它是ulong类型。

还可根据以下规则使用后缀指定文字类型:

  1. 如果使用Ll,那么根据整数的大小,可以判断出其类型为long还是ulong

  2. 如果使用Uu,那么根据整数的大小,可以判断出其类型为uint还是ulong

  3. 如果使用ULulUluLLUluLulU,则整数的类型为ul

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值