VisualC#程序设计教程 第2章 C#数据类型.ppt_第1页
VisualC#程序设计教程 第2章 C#数据类型.ppt_第2页
VisualC#程序设计教程 第2章 C#数据类型.ppt_第3页
VisualC#程序设计教程 第2章 C#数据类型.ppt_第4页
VisualC#程序设计教程 第2章 C#数据类型.ppt_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

1、第2章 C#数据类型,2.1 数据类型,知识目标: 1掌握C#的主要数据类型 2掌握变量的声明和使用 3理解值类型和引用类型 技能目标: 掌握不同数据类型之间的转换方法,2.1 数据类型,2.1.1值类型 值类型分为简单类型,结构类型和枚举类型。 简单类型包含整数类型、浮点类型、布尔类型和字符类型。各种数据类型及取值范围如表2-1所示:,2.1 数据类型,C#转义字符,如下表2-2所示:,2.1 数据类型,2.1.2 常量和变量 1变量 变量可以保存特定的数据,用来在程序中进行运算等操作。变量首先需要声明其名称和类型,才能在程序中引用。 变量的命名必须遵循C#语言的命名规范: 变量名只能由字母

2、、数字和下划线组成,首字符必须是字母和下划线。 变量名不能是C#中的关键字。 声明变量的语法为: 数据类型 变量名; 例如,声明一个整型变量表示成绩: int score; 声明了变量后就可以引用变量,例如,用浮点类型定义商品价格为10: doube price; price=10;,2.1 数据类型,2常量 常量的值在整个程序中是固定不变的,比如圆周率就可以声明为常量,声明常量的语法如下: const 数据类型 常量表达式 例如: const float pi=3.1415927f 声明常量后,可以使用同一名称表示多处使用的数据,修改也比较方便。,2.1 数据类型,2.1.3 运算符和表达式

3、 1算术运算符 C#语言中的算术表达式由运算符和操作数组成,算术运算符如表2-3所示:,2.1 数据类型,2赋值运算符,2.1 数据类型,3关系运算符,2.1 数据类型,4逻辑运算符,2.1 数据类型,5位运算符,2.1 数据类型,6运算符的优先级,2.1 数据类型,2.1.4数据类型转换 在C#程序中,数据类型转换有隐式类型转换和显示类型转换两种方式,隐式数据转换的规则是由低精度的数据自动向高精度的数据进行转换,例如: int m=10; double n; n=m; 显示转换又称为强制类型转换,需要指定转换的类型,例如: char ch=97; int i=(int)ch; 由于显示转换存

4、在高精度数据向低精度数据的转换,因此可能出现丢失数据或数据错误的情况。,2.1 数据类型,string类型和其他简单类型的转换 1string类型转换成其他类型 整型、浮点型、字符型和布尔类型都对应有一个结构类型,该结构类型中提供parse方法,可以把string转换成相应的类型,例如,要把string转换成int类型,则有相应的int.parse(string)方法,如: string str=”123”; int i=int.parse(str); 则i的值为123。 2其他类型转换成string类型 计算后的数据如果要以文本的方式输出,例如在文本框中显示计算后的数据,则需要将数值数据转换

5、成string类型,转换方法是执行ToString方法,例如: int j=5*5; string str=” 5*5的平方是”+j.ToString();,2.1 数据类型,2.1.5 资料链接: Convert类,例如,把string转换成double类型,使用ToDouble方法,其形式之一为: Convert.ToDouble (String) 例如: double d= Convert.ToDouble (“123.45”);,2.2 对象和类,知识目标: 1理解类和对象的概念 2理解类的定义和设计 3了解在msdn中查看类成员 技能目标: 1掌握类的创建 2掌握实例化对象操作 3掌

6、握类成员的定义和引用,2.2 对象和类,2.2.1定义类和创建对象 一切事物都可以看成是对象,对象具有静态和动态的特征,类是对象的抽象,类定义了对象的特征,其中包括表示对象内在的属性以及描述对象行为的方法。对象是类的实例,在创建对象之前,必须先定义该对象所属的类。 类是一种引用类型,当类作为实例对象存在时,是分配在堆中的,堆是分配对象时所使用的内存区域。引用类型包括类(class),接口(interface),数组(array),字符串(string)和委托(delegate)等。,2.2 对象和类,1定义类和创建对象 采用class关键字定义类,语法如下: 访问修饰符 class 类名 类成

7、员; 例如:定义一个读者类,作为读者这种类型,必须有编码和姓名特征,还要记录其借书数量的数据,因此把这三个特征作为读者类的成员,定义如下: class Reader public string readerId; /读者编码 public string personName; /读者姓名 public int number; /借书数量 ,2.2 对象和类,采用new关键字实例化对象,语法如下: 类名 对象名=new 类名( ); 例如,实例化一个的读者对象: class Program static void Main() /声明Reader类型的对象名 Reader reader; /实例

8、化一个Reader对象,并赋给reader reader =new Reader ( ); ,2.2 对象和类,2类成员 类的成员包括字段、方法、属性、索引器和事件,本节介绍字段和方法,在类中,字段的声明和变量相同,字段可以是值类型,引用类型以及数组。 实例化对象后,就可以通过对象名访问该类的成员,访问字段的语法如下: 对象名字段名 例如给该读者的姓名赋值为“张三”,读者条码设置为“001”: reader.personName=”张三”; reader.readId=”001”; 每次用new实例化对象时,都是创建的一个新的独立对象,例如: Reader p=new Reader(); 这时

9、p为一个新的Reader对象,其personName和readId字段是string类型,默认为null,number字段为零。,2.2 对象和类,2.2.2声明和引用方法 方法包含一组语句,完成某个特定的功能,类中的执行语句必须写在方法体内,方法必须在类中声明。比如,前面使用的WriteLine和ReadLine就是Console类中的方法。声明方法的语法如下: 访问修饰符 属性修饰符 返回类型 方法名 (参数列表) 语句; return 返回值; 在上面定义的Reader类中添加方法,getNumber方法获取该读者的借书数量,setNumber方法设置借书数量: class Reader

10、 int number; public int getNumber () return number; public void setNumber( ) number = 5; ,2.2 对象和类,调用方法时,返回类型、参数的个数、参数的类型和顺序要准确匹配,调用方法的语法如下: 对象名方法名(参数列表) 如果方法有返回值,可以直接赋值给一个与返回值同类型的变量,调用的语法如下: 变量=对象名方法名(参数列表) 下面的例子演示了方法间的调用。,2.2 对象和类,2.2.3构造函数 构造函数是和类同名的特殊方法,当实例化对象时,构造函数被调用执行,构造函数和方法一样可以有参数,但构造函数不能有返

11、回值。在构造函数中,通常可以对对象进行初始化数据的操作,例如: class Reader public Reader() public Reader(string rid,string rName) readerId=rid; personName=rName; 实例化读者对象时,可以采用以下两种方式: new Reader(); new Reader(“005”,”Jack”),2.2 对象和类,2.2.4技能操作:设计类 创建控制台程序,命名为“Library”。选择项目,单击右键,选择“添加”,选择“新建项”,选择“类关系图”。,2.2 对象和类,在工具箱中选择“类设计器”,选择“类”拖

12、动至类关系图,并为新类添加类名。,2.2 对象和类,在类设计图中,选择类,单击右键,选择“类详细信息”,在“类详细信息”为该类添加字段和方法名称,修改字段和方法的类型。,2.2 对象和类,各个类设计完成后,在类关系图中可查看各类成员,2.2 对象和类,2.2.5资料链接: Object类,2.3 数组,知识目标: 1掌握数组的定义 2掌握数组和引用 3理解使用ArrayList类存储动态数组 4了解在msdn中查看Array类的属性和方法 技能目标: 1使用数组存储和访问数据 2掌握ArrayList类的使用及方法,2.3 数组,2.3.1数组的声明 数组是一种数据结构,它包含若干相同类型的变

13、量,数组元素可以是任何类型。在C#中,数组是从Array类中派生出来的引用类型。 数组使用类型声明,格式如下: 数组类型 数组名; 例如,声明一个整型数组: int count=new int5; 该整型数组包含5个数组元素,索引从0到4。 如果是声明二维或多维数组,数组索引间用“,”分隔,如声明一个二维数组: string , table=new string2,3; 该数组包含6个数组元素,如下表2-9所示:,2.3 数组,2.3.2数组初始化和引用 在声明数组时初始化数据元素的值,如: int count=new int55,7,3,6,9; string, table=new stri

14、ng2,3“张三”,”软件班”,”南京”,“李四”,”计算机班”,”长沙”; Reader reader=new Reader2new Reader(),new Reader(); 访问数组元素,使用数组名加上方括号和索引访问某个数组元素,例如: count0=100;count4=200; table1,2=”北京”; reader0.personName=”张三”; 注意,除了string类和值类型之外,其他引用类型的数组元素必须要先实例化才能引用。,2.3 数组,2.3.3常用属性和方法 数组可以使用System.Array类提供的复制、排序等方法以及求数组长度等属性 1Length,获

15、得一个32位的整数,表示数组的长度,例如: Console.Write(count.Length); 2Rank,获得数组的维数,例如: Console.Write(table.Rank); 3Copy()方法,复制数组。 int sou = new int 1, 2, 3, 4, 5 ; int dis=new int3; Array.Copy(sou, 1, dis, 0, 2); 4Sort()方法,排序数组 Array.Sort(count);,2.3 数组,2.3.4 ArrayList类 ArrayList类在行为上象一个数组,在实例化时不需要知道数组的大小,当添加一个新元素时,其

16、容量可以动态增长。 ArrayList类的所有元素都是Object类型,因此访问ArrayList中的数据元素时,要执行类型转换,ArrayList类在System.Collections命名空间中,声明时要加上该类所在的命名空间。 1声明ArrayList数组 System.Collections.ArrayList record= new System.Collections.ArrayList(); 2添加数组元素 record.Add(new Reader(); record.Add(new Book();,2.3 数组,下面的例子演示如何创建并初始化 ArrayList 以及如何输出

17、值:,public static void Main() / 创建一个新的ArrayList对象. ArrayList myAL = new ArrayList(); myAL.Add(Hello); myAL.Add(World); myAL.Add(!); /显示ArrayList的Count属性 Console.WriteLine(myAL有0个元素, myAL.Count); /调用方法,显示ArrayList的每个值 PrintValues(myAL); public static void PrintValues(IEnumerable myList) foreach (Objec

18、t obj in myList) Console.WriteLine( 0, obj); ,2.3 数组,ArrayList类的其他方法见下表2-10,可以参考MSDN查看其方法的参数和功能,2.3 数组,2.3.5技能操作:初始化数据 1打开Library项目,初始化两本图书数据,Book book = new Book2; book 0 = new Book(); book0.bookId=0000; book0. bookName =c#程序设计; book0.count= 5; book 1 = new Book(); book1.bookId=0200; book1. bookNam

19、e =家庭教育; book1.count= 8;,2.3 数组,2定义借书记录类,class workRecord public string bookId; public string readId; public workRecord(string bid, string rid) bookId = bid; readId = rid; ,2.3 数组,3 重新定义借、还书方法,class Operator /定义ArrayList数组,保存借书记录信息 System.Collections.ArrayList borrowBooksInfo =new System.Collections

20、. ArrayList(); /借书 public void borrowBook(Book book,Reader read) /添加借书记录 borrowBooksInfo.Add(new workRecord(book.bookId,read.readerId); Console.WriteLine(read.personName+”借阅”+book.bookName); ,/还书,返回借书读者的编号,为null则该书未借出 public void backBook(Book book) workRecord wr; /用foreach遍历借书信息 foreach (object s i

21、n borrowBooksInfo) /类型转换 wr = (workRecord)s; /是否在借书表中已借出 if (wr.bookId = = book.bookId) /删除借书记录 borrowBooksInfo.Remove(wr); Console.WriteLine(”已还”+book.bookName); return; ,2.3 数组,4在Main方法中执行 user.borrowBook(book0, reader); /借书 user.borrowBook(book1, reader); /借书 user.backBook(book0); /还书 执行结果如图,2.3

22、数组,2.3.6资料链接:Array类,2.4 字符串,知识目标: 1掌握字符串的定义和引用 2掌握string.format的使用 3在MSDN中查看String类的属性和方法 技能目标: 使用字符串格式化数据,2.2 对象和类,2.4.1字符串声明和引用 在C#语言中,字符串是使用 string 关键字声明的一个字符数组,放在一对双引号之中 。字符串中可以包含转义符,如“n”(换行) string hello = HellonWorld!; 表示: Hello World! 符号表示忽略转义符和分行符。以下两个字符串是完全相同的: string p1 = c:My Documentsfil

23、e.txt; string p2 = c:My Documentsfile.txt;,2.4 字符串,2.4.2字符串属性和方法 String类提供了很多字符串处理方法 1格式化数字 public static string Format ( string format,Object arg0 ) string s = String.Format( Currency: . . . . . . . . 0:Cn + Decimal:. . . . . . . . . 0:Dn + Scientific: . . . . . . . 1:En + Fixed point:. . . . . . .

24、 1:Fn + -123, -123.45f),2.4 字符串,2比较字符串的值 if(userName.Equals(“王五”),2.4 字符串,3取子串 Substring方法有两种形式: public string Substring (int startIndex) public string Substring (int startIndex, int length) 其中,startIndex表示子字符串的起始位置,length表示子串的长度,例如: String myString = abc; myString.Substring(2, 1) ;的结果为 c“ 4 分割字符串 S

25、tring.Split 方法用指定的字符分隔字符串,其形式为: public string Split (params char separator) 例如:string words = this is a list of words, with: a bit of punctuation.; string split = words.Split(new Char , , ., :); foreach (string s in split) Console.WriteLine(s); ,2.4 字符串,2.4.3技能操作:格式化数据 由于图书信息中包含中文字符,采用PadRight方法把字符串

26、填充成固定长度,再对齐输出。 static void Main() book0.bookName=c#程序设计; book0.author=王晓; book1.bookName=机床夹具与设计; book1.author=刘学光; string aa=StrFormat(book0.bookName,20)+ StrFormat(book0.author,8); string bb=StrFormat(book1.bookName,20)+ StrFormat(book1.author,8); Console.WriteLine(aa); Console.WriteLine(bb); stat

27、ic string StrFormat(string s, int width) /对齐输出格式 /把一个“unicode字符串”格式化为全角字符占2个位置的“普通字符串” Encoding code = Encoding.GetEncoding(GB18030); byte bs = code.GetBytes(s); return s.PadRight(width - bs.Length + s.Length); ,2.4 字符串,2.4.4资料链接:String类,2.4 字符串,static void Main(string args) string str1 = Hello; str

28、ing str2 = World ; /演示IndexOf的简单应用,获得字母 r 在 str1 中的位置 Console.WriteLine(字母 r 在 str2 中的位置是 = 0, str2.IndexOf(r); /演示Copy方法的使用,把 str1 复制到 str2 Console.WriteLine(把 str1 复制到 str2 .); str2 = String.Copy(str1); Console.WriteLine(str2 = 0, str2); /演示Concat方法的简单使用,把两个字符串连接起来 string fName = Harry ; string lN

29、ame = Potter ; Console.WriteLine(使用Concat连接人名, 0!, string.Concat (fName, lName); /演示Insert方法的简单应用,把一个字符串插到另一字符串中 string insert = abcd; Console.WriteLine(使用Insert方法在字符串“abcd”中插入一个自符“M”以后,字符串变成了0, insert.Insert(2, M); ,2.5结构和枚举类型,知识目标: 1理解枚举类型的声明和应用 2理解结构类型的声明和应用 3理解泛型机制 技能目标: 1掌握datatime结构成员的使用 2掌握泛型

30、集合类的应用,2.5结构和枚举类型,2.5.1枚举类型 枚举类型是C#中一种轻量级的值类型,C#用枚举来表达一组特定值的集合,采用enum关键字声明枚举类型。比如,声明一个代表星期的枚举类型。 enum weekDay Sun,Mon,Tue,Wen,Thur,Fri,Sat 引用枚举类型首先要声明一个该类型的变量。 weekDay today; today=weekDay.Mon; 枚举类型元素的取值只能是整型。如果没有为元素赋值,元素取值从0开始,后面的元素取值依次加1。上例中,Sun=0,Mon=1,Sat=6。,2.5结构和枚举类型,下面的例子中,把0赋值给枚举类型的变量curWeek

31、,相当于把Sun赋值给变量。 enum weekday Sun, Mon, Tue, Wen, Thur, Fri, Sat class Program static void Main(string args) weekday curDay,nextDay; curDay = 0; nextDay=weekday.Mon; Console.WriteLine(“01”, curDay,nextDay); 除了0以外,其他整数不能直接赋值给枚举变量,否则,要进行强制类型转换,如urWeek =(weekday)1 ;,2.5结构和枚举类型,2.5.2 结构类型 结构类型用来组合一些相关的信息,

32、形成一种新的复合数据类型。结构类型的元素可由不同的值类型变量构成,这些变量称为结构的成员。例如,把日期作为一种数据类型,其中包含年、月、日三个整型的成员。结构类型采用struct来声明,例如定义日期结构类型: struct date public int year; public int month; public int day 结构类型的成员类型没有限制,可以是任何值类型,甚至包含结构类型本身。结构和类非常相似,它们都可以包含字段、方法、属性、事件、索引等成员,结构也可以实现多个接口。,2.5结构和枚举类型,下面的例子定义通讯录的记录结构类型:,enum weekday Sun, Mon,

33、 Tue, Wen, Thur, Fri, Sat struct date public int year; public int month; public int day; public weekday curWeek; struct phoneBook public string name; public date birthday; /引用前面定义的结构类型 public uint phone; public void getname() Console.WriteLine(姓名:+name); ,class Program static void Main(string args)

34、phoneBook record; = 张三; record.birthday.year = 1980; record.birthday.month = 10; record.birthday.day = 30; record.birthday.curWeek = weekday.Mon; record.phone = 12345678; record.getname(); Console.WriteLine(出生:0月1日2 , record.birthday.month , record.birthday.day,record.birthday.curWeek);

35、Console.WriteLine(电话:0, record.phone); ,2.2 对象和类,2.5.3 泛型 泛型类通过使用参数 T来定义未知参数,在实例化对象时确定实际的数据类型,在添加和和提取数据元素时,只对确定类型的数据进行操作,避免了装箱和拆箱的风险和频繁的数据转换。 定义泛型类GenericList: public class GenericList void Add(T input) 实例化GenericList泛型类,确定参数类型为int类型: GenericList list1 = new GenericList();,2.5结构和枚举类型,在命名空间System.Col

36、lections.Generic中提供了很多泛型集合类。 List类声明为: public class List 下面的例子引用List类添加和输出列表的数据元素。 using System; using System.Collections.Generic; public class Example public static void Main() List name = new List(); name.Add(张三); name.Add(李四); foreach(string dinosaur in name) Console.WriteLine(name); ,2.5结构和枚举类型,2.5.4 技能操作:泛型类List 使用泛型类List保存和遍历图书借阅的记录。 class O

温馨提示

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

评论

0/150

提交评论