网页相关-unit2语法基础数据类型_第1页
网页相关-unit2语法基础数据类型_第2页
网页相关-unit2语法基础数据类型_第3页
网页相关-unit2语法基础数据类型_第4页
网页相关-unit2语法基础数据类型_第5页
免费预览已结束,剩余32页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Overview值类型类型类型转换

.cn

程序处理的对象是各种各样的数据,因此, 须让计算机了解需要处理什么样的数据,以及采用哪种方式进行处理,按什么格式进行保存等等。C#语言的数据类型可以分为两大部分:值类型(ValueType)类型(ReferenceType)

.cn字符类型值类型数据类型类型sbytebyteshortushortint

uintlongulong数组

字符串类委托接口简单类型结构体类型枚举类型整数类型布尔类型实数类型Floatdoubledecimal每个数据类型需要明确以下几点:可以存放什么类型的数据?数据的范围?在内存中的

方式?可以进行什么样的运算?如何定义某种类型的变量?如何初始化某个类型的变量?在进行赋值操作时需要注意什么?

.cn值类型和

类型的区别值类型的变量值直接包含数据;类型的变量把它们的在对象中。

.cn

.cn1

值类型C#的所有值类型均隐式派System.ValueType;(System.ValueType直接派生System.Object)

值类型的变量其内含为变量的值本身,C#语言的值类型可以分为以下几种:简单类型(Simple

types)结构类型(Struct

types)枚举类型(Enumeration

types)值类型的默认值

所有的值类型都隐含地

了一个公共的无参数的构造函数,这个构造函数叫做默认构造函数。默认构造函数返回一个初始为零的值类型的实例,称之为默认值。对于sbyte、byte、short、ushort、int、uint、long、ulong,默认值为0。对于char,默认值是„\x0000‟对于float,默认值是0.0F对于double,默认值是0.0D对于decimal,默认值是0.0M对于bool,默认值是false对于一个枚举类型,默认值是0对于一个结构类型,默认值的设置就是把所有值类型的域都设置为它们各自的默认值,把所有的

类型的域赋为空

.cn

.cn简单类型简单类型:预定义结构体类型(struct),通过保留字来标识;是C#语言中提供的、无法再分解的一种具体类型。简单类型是结构体类型的别名,所以每个简单类型具有所对应的预定义结构类型的成员(如属性,方法等)。MinValue----得到该类型的最小值MaxValue----得到该类型的最大值Parse()----类型转换(对字符串进行转换)TryParse()表1-1

保留字与预定义的结构类型保留字预定义的结构类型sbyteSystem.

SBytebyteSystem.

ByteshortSystem.

Int16ushortSystem.

UInt16intSystem.

Int32uintSystem.

UInt32longSystem.

Int64ulongSystem.

UInt64charSystem.

CharfloatSystem.

SingledoubleSystem.

DoubleboolSystem.

BooleandecimalSystem.

Decimal1.1

整数类型顾名思义,整数类型的变量的值为整数。数学上的整数可以从负无穷大到正无穷大,但是由于计算机的单元是有限的,所以计算机语言提供的整数类型的值总是在一定的范围之内。根据变量在内存中所占的二进制位数不同和是否有符号位,C#语言中整数类型分八种。

.cn表1-2

整数类型及其取值范围数据类型特征取值范围sbyte有符号8

位整数在-128

到127

之间byte无符号8

位整数在0

到255

之间short有符号16

位整数在-32,768

到32,767之间ushort无符号16

位整数在0

到65,535

之间int有符号32

位整数在-2,147,483,648到2,147,483,647之间uint无符号32

位整数在0

到4,294,967,295

之间long有符号64

位整数在-9,223,372,036,854,775,808到9,223,372,036,854,775,807

之间ulong无符号64

位整数在0

到18,446,744,073,709,551,615之间1.2

实数类型数学中的实数不仅包括整数,而且包括小数。在C#语言中实数类型包括单精度浮点类型(float)、双精度浮点类型(double)和十进制类型(decimal)。它们的差别主要在于取值范围和精度不同。计算机对浮点数的运算速度大大低于对整数的运算,在对精度要求不是很高的情况下, 最好采用float型,如果对精度要求很高时,

应该采用double型,但这样将会占用 的内存单元,处理速度也会相对较慢。Decimal型的取值范围比double型的范围要小的多,但它更精确,非常适合金融和货币方面的计算。具体各实数类型及其取值范围与精度如表1-3所示。表1-3

实数类型及其取值范围与精度数据类型特征取值范围示例float单精度浮点类型(32位)在正负1.5×10-45

到3.4×1038

之间,精度为7位数float

val=6.18F

;double双精度浮点类型(64位)在正负5.0×10-324

到1.7×10308之间,精度为15到16位数double

val=6.18

;decimal十进制类型在1.0×10-28到7.9×1028的之间,精度为28至29位有效数字decimal

val=6.18M

;1.3

字符类型除了数字以外,计算机处理的信息,主要就是字符了。在C#语言中字符类型采用国际上公认16位Unicode字符集表示形式,用它可以来表示世界上大多种语言。其取值范围为'\u0000'到

'\uFFFF',即0到65535。对于一个字符类型变量,

可以采用如下方式对它进行赋值。char

c='H';//字符Hchar

c='\x0048';//字符H,十六进制转义符(前缀为\x)char

c='\u0048';//字符H,Unicode表示形式(前缀为\u)char

c='\r';//回车,转义字符(用于在程序中指代特殊的控制字符)常见转义字符如表2-3

所示。表2-3

转义符(Escape

Sequences)转义符字符名\'单引号\"双引号\\反斜杠\0空字符\n新行\r回车\t水平tab\v垂直tab1.4

布尔类型布尔类型是用来表示“真”和“假”这两个概念的。这虽然看起来很简单,但实际应用非常广泛。布尔类型表示的逻辑变量只有两种取值:“真”或“假”,主要用来在程序中做“判断”和“分支”。在C#语言中,这两种取值分别采用true和false来表示。这里需要说明的是,在C#语言中,

不能象在C语言和C++语言中那样,用0来表示“假”,其它任何非0的式子都表示“真”。任何整数类型和布尔类型之间都不能进行转换,将任何整数类型转换成布尔型都是不合法的。bool

x=1;//错误,不存在这种写法。

bool

y=0;//错误,不存在这种写法。

bool

x=true;//正确,可以被执行。1.5

结构类型完成一些常见的数据运算和文字处理工作,使用前面介绍过的简单类型

经足够了。但是

会经常碰到一些更为复杂的数据类型。比如,学生成绩单的记录中一般包含学生的学号、

和成绩。如果按照简单

类型来处理,每一条记录都要存放到三个不同的变量当中,这样工作量很大,也不够直观。有没有更好的办法呢?正如上面的例子,在实际生活中,

经常把一组相关的信息放在一起。把一系列相关的变量组织成为一个整体的过程,

称为生成结构的过程。这个整体的类型就叫做结构类型,每一个变量称为结构的成员。结构类型采用struct进行

,定义学生成绩单的记录结构的代码如下:struct

StudentScoreList{public

string

id

;publicstring

name;public

int

score

;}StudentScoreList

s1

;其中,s1是一个StudentScoreList结构类型的变量。上面 中的public表示对结构类型的成员的权限,详细内容参见3.2.2

修饰符。对结构成员的通过结构变量名加问符“.”号,再跟成员的名称:

=

"Tom"

;结构类型包含的成员类型可以是任何类型,包括可以是另一种结构类型。struct

StudentScoreList{public

string

id;public

string

name;public

struct

Scores{public

int

mathematics

;public

int

chinese

;public

int

english

;public

int

biology

;}}这里,StudentScoreList这个结构中又包括了Scores这个结构,

Scores结构类型中包括:数学成绩(mathematics)、语文成绩

(chinese)、英语成绩(english)和生物成绩(biology)四个成员,分别用来表示该学生某此考试的数学、语文、英语和生物四门课程的成绩。1.6

枚举类型枚举类型实际上是为一组在逻辑上密不可分的整数值提供一个便于的符号。枚举类型采用enum来进行声明,下面来一星期的枚举类型的变量:enum

WeekOfDay{Sunday,

Monday,

Tuesday,

Wednesday,

Thursday,Friday,

Saturday};编译系统对枚举元素按常量处理,程序中不能对枚举元

素进行赋值操作。枚举元素作为变量是有值的,编译系

统按照其在枚举类型定义中的位置顺序对它们进行赋值,默认情况下它们的值依次为0、1、2等。

.cn

.cn枚举值可以用来进行判断比较,其比较规则是按其在定义时的顺序号进行比较。在枚举中,也可以给元素直接赋值,如下把星期天的值设为1,其后的元素的值分别为2、3、…。enum

WeekOfDay{Sunday=1,

Monday,

Tuesday,

Wednesday,Thursday,Friday,

Saturday};另外,需要说明的是,为枚举类型的元素所赋的值的类型限于long、int、short和byte等整数类型。2类型类型,

类型C#语言中的另一大数据类型是也称为参考类型。和值类型相比,所包含的值,而是指向它所要类型的变量不直接的值。换句话说,值类型在其内存空间中

的是实际数据,而的是一个指针,该指针指向类型在数据的其内存空间中另一块内存位置。由此可见,值类型的内存开销要小,速度要快,而

类型的内存开销要大,

速度稍慢。类型的象的特征。类型有四种:类、委托、数组和接好处在于它具有面C#语言中的口。string表示一个Unicode字符序列,专门用于对字符串的操作。同样,这个类也是在.NET框架结构的预定义的名字空间System中定义的,是类System.String的别名。字符串在实际中应用非常广泛,利用string类中封装的各种操作,可以很容易完成对字符串处理。比如:

string

str1="How

"+"are

you?“;char

c

=

" o

World!"[2];

//

“[

]”;string

str1

=

"Nice

to

meet

you

!";string

str2

=

@"Nice

to

meet

you

!";bool

b

=

(string

1==

string2);2.1

string类2.1

string类string表示一个Unicode字符序列,专门用于对字符串的操作。同样,这个类也是在.NET框架结构的预定义的名字空间System中定义的,是类System.String的别名。字符串在实际中应用非常广泛,利用string类中封装的各种

操作,可以很容易完成对字符串处理。比如:string

str1

=

"How

"+"are

you

?“;char

c

=

" o

World!"[2];string

str1

=

"Nice

to

meet

you

!";string

str2

=

@"Nice

to

meet

you

!";bool

b

=

(string

1==

string2);

.cn常用属性或方法提取子串Substring()比较字符串pare()、CompareTo()、Equals()字符串的长度Length(为属性)查找IndexOf()、LastIndexOf()删除Remove(int

startIndex):从指定位置开始删除指定长度的字符注意返回值是删除后的字符串。在字串中指定索引位之前

指定字符。如:str1.Insert(1,"字");替换字串变量.Replace("子字串","替换为").注意返回值是操作后的字符串。

.cn

.cnString和StringBuilder的比较String

对象是不可改变的。每次使用System.String

类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的String

对象相关的系统开销可能会非常昂贵。StringBuilder对象是动态对象,允许扩充它所封装的字符串中字符的数量。当修改StringBuilder时,在达到容量之前,它不会为其自己重新分配空间。当达到容量时,将自动分配新的空间且容量翻倍。一般StringBuilder用于字符串的操作,而String用于字符串的显示!StringBuilder

sb=newStringBuilder("

e",100);//初始化对象并设置初始容量为100sb.Append("to

");StringBuilder的成员:sb.Append(),给当前字符串追加字符串。sb.AppendFormat()——添加特定格式的字符串sb.Insert()——

一个子字符串sb.Remove()——从当前字符串删除字符sb.Replace()——替换字符串中指定的字符sb.ToString()——将sb转化为String

对象

.cn2.2

数组数据类型,在批量处理数据的时候,我数组是一种们要使用数组。数组由一组类型相同的有序数据构成,所有数据占据一块连续的内存空间。数组按照数组名、数据元素的类型和维数进行描述。数组名可以是任意合法的标识符。数组类型可以是任何数据类型,包括数组类型。数组按维数可分为一维数组、二维数组等。数组元素通过索引

,数组索引从0开始。

.cn数组结构示意图2.2.1

一维数组:数据类型[]数组名;举例:int[]anArray;//

一个整型的一维数组float

[

]

anArrayOfFloats;

//string

[

]

anArrayOfStrings;

//一个浮点型的一维数组一个字符串型的一维数组创建:

数组变量时,还没有创建数组,还没有为数组数组后,需要对数中元素分配任何内存空间,因此,组实例化。anArray

=

new

int

[5

]

;anArrayOfStrings

=

new

stirng

[10]

;new运算符用来创建数组,为数组中各元素分配内存空间,并把它们初始化为默认值。在此例中,所有数组元素都被初始化为零。举例:int

[

]

anArray

=

new

int

[

]

{1,2,3,4,5,6};string[]anArrayOfStrings=new

string[]{"冠军","亚军","季军"};也可使用下列快捷方式来定义:int

[

]

anArray

=

{1,2,3,4,5,6}

;string[]anArrayOfStrings={"冠军","亚军","季军"};

如果在

一个数组变量时没将其初始化,必须使用new

运算符将初始值分配给此变量,否则会产生编译错误。int

[

]

anArray

;anArray={1,2,3,4,5,6};//错误anArray=new

int[]{1,2,3,4,5,6};//正确2.2.2二维数组:数据类型[,]数组名;举例:int[,]anArray;//

一个整型的二维数组float

[

,

]anArrayOfFloats;

//string

[

,

]

anArrayOfStrings;

//一个浮点型的二维数组一个字符串型的二维数组创建数组:anArray

=

new

int

[2,4]

;anArrayOfStrings

=

new

stirng

[2,4]

;new运算符用来创建数组,为数组中各元素分配内存空间,并把它们初始化为默认值。举例:int[,]anArray=new

int

[2,4]{{1,2,3,4},{5,6,7,8}};string[,]anArrayOfStrings=new

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论