我们在声明变量时,首先需要确定变量的类型,那么,开发人员就要灵活的使用这些类型,实际上,可以使用的变量类型是无限多的,因为开发人员可以通过自定义类型存储各种数据,但简单数据类型是C#中预定义的一些类型。
C#中的数据类型根据其定义可以分为两种:一种是值类型,另一种是引用类型,从概念上看,值类型是直接存储值,而引用类型存储的是对值的引用。C#中的数据类型结构:
值类型 | 引用类型 | ||
↓ | ↘ | ↓ | ↘ |
简单类型 | 复合类型 | 预定义引用类型 | 自义定引用类型 |
↓ | ↓ | ↓ | ↓ |
整数类型 | 枚举类型 | Object | 数组 |
浮点类型 | 结构类型 | String | 类 |
布尔类型 | 接口 | ||
字符类型 | 委托 |
从上面可以看出,值类型主要包括简单类型和复合类型两种,其中简单类型是程序中使用的最基本类型,主要包括整数类型、浮点类型、布尔类型和字符类型等4种,这4种简单类型都是.NET中预定义的:而复合类型主要包括枚举类型和结构类型,这两种复合类型既可以是NET中预定义的,也可以是用户自定义的。上面就是简单类型.下面是整数类型
1.整数类型
整数类型用来存储整数数值,即没有小数部分的数值。可以是正数,也可以是负数。整型数据在
C#程序中有3种表示形式,分别为十进制、八进制和十六进制。
十进制:十进制的表现形式就是我们在日常生活中使用的数据,如120、0、-127。
十进制要注意:不能以0作为十进制数的开头(0除外)。
八进制:以0开头的数,如0123(转换成十进制数为83)、-0123(转换成十进制数为-83)。
要注意:八进制必须以0开头。
十六进制:以0x或0X开头的数,如0x25(转换成十进制数为37)、0Xb01e(转换成十进制数为45086)。
十六进制要注意:十六进制必须以0X或0x开头。
C#还有一些内置的整数类型 “有符号整数”和“无符号整数”,其中,“无符号整数”是在“有符号整数”
类型的前面加了一个u,这里的u是unsigned的缩写。它们的主要区别是:“有符号整数”既可以存储
正数,也可以存储负数;“无符号整数”只能存放不带符号的整数,因此,它只能存放正数。
2.浮点类型
浮点类型变量主要用于处理含有小数的数据,浮点类型主要包含foat和double两种类型。
如果不做任何设置,包含小数点的数值默认为是double类型,没有特别指定的情况下,这个数值是double类型。如果要将数值以float类型来处理,就需要通过使用f或F将其强制指定为float类型。
如果要将数值强制指定为double类型,则应该使用d或D进行设置,但加不加“d”或“D”没
有硬性规定,可以加也可以不加。
不过值得注意的是需要使用float类型变量时,必须在数值的后面跟随f或F,否则编译器会直接将其作为
double类型处理;另外,也可以在double类型的值前面加上(oat),对其进行强制转换
(2)浮点类型变量的默认值是0,而不是0.0。
3.decimal类型
decimal类型表示128位数据类型,它是一种精度更高的浮点类型,其精度可以达到28位,取值
范围为±1.0×10^-28~±7.9×10^28。
因为decimal类型的高精度特性,它更适合用于财务和货币之间的计算.
4.bool类型
bool类型(又称布尔类型)主要用来表示true或者false值,C#中定义布尔类型时,需要使用
bool关键字。例如,下面代码定义一个布尔类型的变量:
bool x = true;
这个类型需要注意的是布尔类型变量的值只能是true或者false,不能将其它的值指定给布尔类型的变量,如果将一个整数赋值给布尔类型会有错误提示
5.字符类型
字符类型在C#中使用Char类来表示,该类主要用来存储单个字符,它占用16位(两个字节)的内存空间。在定义字符型变量时,要以单引号(')表示,如'a表示一个字符,而"a"则表示一个字符串,因为虽然其只有一个字符,但由于使用了双引号,所以它仍然表示字符串,而不是字符。字符类型变量的声明非常简单,代码如下:
Cher ch1 = ‘1’;
Char ch2 = ‘1’;
注意:Char类只能定义一个Unicode字符。Unicode字符是目前计算机中通用的字符编码,它为针对不同语言中的每个字符设定了统一的二进制编码,用于满足跨语言、跨平台的文本转换和处理的要求,这里了解Unicode即可。
C#中的Char类提供了很多操作字符的方法,其中以Is和To开始的方法比较常用。
以Is开始的方法大多是判断Unicode字符是否为某个类别,比如是否大小写、是否是数字等;而以To开始的方法主要是对字符进行转换大小写及转换字符串的操作。
变量的作用域
由于变量被定义后,只是暂时存储在内存中,等程序执行到某一个点后,该变量会被释放掉,也
就是说变量有它的生命周期。因此,变量的作用域是指程序代码能够访问该变量的区域,如果超出该
区域,则在编译时会出现错误。在程序中,一般会根据变量的“有效范围”将变量分为“成员变量”
和“局部变量”。
1.成员变量
在类体中定义的变量被称为成员变量,成员变量在整个类中都有效。类的成员变量又可以分为两
种,即静态变量和实例变量。
例如,在TCst类中声明实例变量和静态变量,代码如下:
其中,x为实例变量,y为静态变量(也称类变量)。如果在成员变量的类型前面加上关键字static,
这样的成员变量称为静态变量。静态变量的有效范围可以跨类,甚至可达到整个应用程序之内。对于
静态变量,除了能在定义它的类内存取,还能直接以“类名.静态变量”的方式在其他类内使用。