在C#中,符合公共语言规范的数据类型可分成2类:值类型和引用类型
值类型保护简单值类型和复合值类型。最简单值类型可以再细分为整数类型、字符类型、实数类型和布尔类型;而复合值类型则是简单值类型的复合,它包括结构(struct)类型和枚举(enum)类型。
示例:
1、整数类型
sbyte 有符号8位整数
byte 无符号8位整数
short 有符号16位整数
unshort 无符号16位整数
int 有符号32位整数
uint 无符号32位整数
long 有符号64位整数
ulnong 无符号64位整数
2、字符类型
字符是计算机文字信息处理的基本单位,它包括单个字母、数字、标点符号以及特殊的控制字符。
对字符型变量的申明和赋值很简单,如:
char x='a';
注意,表示字符时要用单引号括起来,而如果用了双引号,C#编译器则认为它是字符串(string)类型。
3、实数类型
C#提供3种类型:单精度类型(float)、双精度类型(double)和十进制小数类型(decimal)
采用默认的小数格式书写实数的是double类型。要申明float和decimal类型,还需要在小数后面加上后缀F和M,如:
double x=1.2;
float y=1.2F;
decimal z=1.2M;
4、布尔类型
布尔类型(bool)表示布尔逻辑,取值只能是true或false;分别表示真和假;
申明实例:bool b1=true; bool b2=false;
5、结构类型
实际生活中的对象通常更为复杂,很难用一个简单类型就能把它描述清楚,而是需要用多个简单值类型的组合,比如,通讯录中记录的每一个联系人可以包含项目、电话和地址等内容,把一系列相关的信息组织成为一个单一的实体的过程,就是创建一个结构的过程,结构类型采用关键字struct进行定义,其中可以包含0个或者任意多个成员的定义。例如,对联系人结构Contact的定义:
struct Contact
{
string m_name;
int m_age;
string m_telephone;
public struct Address
{
public string m_city;
public string m_street;
public int m_number;
}
public Address m_address;
}
使用该结构要申明一个Contact类型的变量:
public Contact c1; //为结构的成员添加public修饰符 才能访问它的成员
这里c1就表示一个Contact的结构类型的变量。
c1.m_address.m_city;//对结构成员的访问可以通过圆点链接符“.”进行。
注意:结构类型包含的成员类型是没有限制的,可以使简单值类型,也可以是结构类型和枚举类型,还可以使各种引用类型。
6、枚举类型
枚举类型是另一种复合类型,和结构类型不同的是,枚举类型要求成员只能是整数类型。枚举类型主要用于表示一组逻辑上相关联的项的组合,使用关键字enum来定义,例如:可以定义一个代表星期的枚举类型Weekday,其中成员分布表示星期日~星期六;
enum Weekday{ sunday,monday,tuesday, wednessday,thursday,friday, saturday}
特别需要注意的是:结构类型是由一组不同类型的成员所组成的新的数据类型,结构类型的变量包含了所有成员的值;而枚举类型只是列举出各个成员,枚举类型的变量在某一时刻只能去其中某个成员的值。例如:Weekday类型的变量用于日期的星期表示,在一个时刻只能代表一个星期中的某一天(如星期二),而不能同时既是星期二又是星期三,对枚举成员的访问同样采用圆点符号“.”进行,只不过不是通过枚举类型的变量,而是通过枚举类型的名称。
Weekday w1;
w1=Weekday.monday;
如果不指定,那么C#编译器默认枚举中的第一个元素对于的整数值为0;其后面每个元素的值依次递增1,当然也可以再定义枚举时直接指定元素的整数值,比如把星期天的值设为1,则气候的元素依次为2到7
enum Weekday{ sunday=1,monday,tuesday, wednessday,thursday,friday, saturday}
有趣的是,为枚举类型的变量赋值可以不限定在范围之内,如下面的语句也是合法的:
w1=(Weekday) 200;