《基于C#的可视化编程课件完整版电子教案.pptx》由会员分享,可在线阅读,更多相关《基于C#的可视化编程课件完整版电子教案.pptx(227页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2019基于C#的可视化编程基础教程2019第一章 C#基础第 3 页C#基础值类型引用数据类型枚举类型基本概念、数据类型循环语句:while循环、do.while循环、for循环跳转语句:break语句、continue语句、goto语句、return语句循环与跳转语句类的概念、声明封装、继承、多态类与对象ArrayList类Hashtable类集合、命名空间第一章 C#基础第 4 页1.1 C#概述C#是微软公司推出的一种语法简洁、类型安全的面向对象的编程语言,可以通过它编写在.NET Framework 上运行的各种安全可靠的应用程序。近几年C#的使用人数呈现上升趋势,这也说明了C#语言
2、正在被更多人所认同。C#有以下特点:a.语法简洁。不允许直接操作内存,去掉了指针操作。b.面向对象的设计。封装、继承和多态。c.与Web紧密结合。支持绝大多数的Web标准,如:HTML、XML、SOAP等。d.强大的安全机制。e.兼容性。因为C#遵循.NET的公共语言规范,从而能够保证与其他语言开发的组件兼容。f.灵活的版本处理技术。C#语言本身内置了版本控制功能,因此开发人员能更加容易地开发和维护应用程序。g.完善的错误、异常处理机制。C#提供了完善的错误异常处理机制,使程序在交付使用时能够更加健壮。第一章 C#基础第 5 页1.1 C#概述例【例【1.11.1】使用】使用Visual St
3、udioVisual Studio和和C#C#语言来编写第一个程序,程序在控制台上显示语言来编写第一个程序,程序在控制台上显示字符串字符串“Hello World!”“Hello World!”第一章 C#基础创建一个控制台应用程序,使用WriteLine方法输出“Hello World!”字符串。static void Main(string args)/在main方法下编写代码输出数据 Console.WriteLine(“Hello World!”);/输出“Hello World!”Console.ReadLine();第 6 页值类型数据类型值类型变量直接存储其数据值,主要包含整数类
4、型、浮点类型以及布尔类型等。值类型变量在堆栈中进行分配引用类型引用类型是构建C#应用程序的主要对象类型数据。在应用程序执行过程中,预先定义的对象类型以new创建对象实例,并存储在堆栈中。枚举类型枚举类型是一种独特的值类型,它用于声明一组具有相同性质的常量。编写与日期相关的应用程序时,经常需要使用年、月、日、星期等数据,可以将这些数据组织成多个不同名称的枚举类型。第一章 C#基础1.2 基本数据类型第 7 页第一章 C#基础值类型整数类型类类 型型说说 明明范范 围围sbyte8位有符号整数-128127short16位有符号整数-3276832767int32位有符号整数-2147483648
5、2147483647long64位有符号整数-92233720368547758089223372036854775807byte8位无符号整数0255ushort16位无符号整数065535uint32位无符号整数04294967295ulong64位无符号整数018446744073709551615整数类型代表一种没有小数点的整数数值,在C#中内置的整数类型如表1-1所示。表表1-1 C#1-1 C#内置的整数类型内置的整数类型第 8 页第一章 C#基础浮点类型变量主要用于处理含有小数的数值数据,浮点类型主要包含float和double两种数值类型。表表1-2 1-2 浮点类型及描述浮点
6、类型及描述类 型说 明范 围float精确到7位数1.510-453.41038double精确到1516位数5010-3241.710308 布尔类型主要是用来表示true/false值,一个布尔类型的变量,其值只能是true或者false,不能将其他的值指定给布尔类型变量,布尔类型变量不能与其他类型进行转值类型浮点类型值类型布尔类型第 9 页第一章 C#基础引用类型是构建引用类型是构建C#应用程序的主要对象类型数据。在应用程序执行过程中,预先定义的对象类型应用程序的主要对象类型数据。在应用程序执行过程中,预先定义的对象类型以以new创建对象实例,并存储在堆栈中。引用类型具有如下特征:创建对
7、象实例,并存储在堆栈中。引用类型具有如下特征:a.必须在托管堆中为引用类型变量分配内存。b.必须使用关键字new来创建引用类型变量。c.在托管堆中分配的每个对象都有与之相关联的附加成员,这些成员必须被初始化。d.引用类型变量是由垃圾回收机制来管理的。e.多个引用类型变量可以引用同一对象,这种情形下,对一个变量的操作会影响另一个变量所引用的同一对象。f.引用类型被赋值前的值都是null。所有被称为“类”的都是引用类型,主要包括类、接口、数组和委托。下面通过一个实例来演示如何使用引用类型。引用类型第 10 页第一章 C#基础枚举类型是一种独特的值类型,它用于声明一组具有相同性质的常量。编写与日期相
8、关的应用程枚举类型是一种独特的值类型,它用于声明一组具有相同性质的常量。编写与日期相关的应用程序时,经常需要使用年、月、日、星期等数据,可以将这些数据组织成多个不同名称的枚举类型。序时,经常需要使用年、月、日、星期等数据,可以将这些数据组织成多个不同名称的枚举类型。C#中使用关键字enum声明枚举,其形式如下:大括号中的内容为枚举值列表,每个枚举值均对应一个枚举值名称,value1valueN为整数数据类型,list1listN为枚举值的标识名称。枚举类型enum 枚举名list1=value1,list2=value2,list3=value3,.listN=valueN,第 11 页循环语
9、句while语句、do.while语句、for语句、foreach语句跳转语句break语句、continue语句、goto语句、return语句点击此处添加标题内容1.3 循环与跳转语句第 12 页循环语句主要用于重复执行嵌入语句,在C#中,常见的循环语句有while语句、do.while语句、for语句和foreach语句。第一章 C#基础循环语句while(【布尔表达式】)【语句块】1.while语句语句执行顺序:(1)计算【布尔表达式】的值。(2)如果【布尔表达式】的值为true,程序执行【语句块】。执行完毕重新计算【布尔表达式】的值是否为true。(3)如果【布尔表达式】的值为fal
10、se,则控制将转移到while语句的结尾。第 13 页【例例1.5】创创建建一一个个控控制制台台应应用用程程序序,声声明明一一个个int类类型型的的数数组组,并并初初始始化化数组,然后通过数组,然后通过while语句循环输出数组中的所有成员。语句循环输出数组中的所有成员。第一章 C#基础循环语句static void Main(string args)int num=new int61,2,3,4,5,6;/声明一个int类型的数组并初始化int s=0;/声明一个int类型的变量s并初始化while(s6)/调用while语句,当s小于6时执行Console.WriteLine(“num0的
11、值为1”,s,nums);s+;/s自增1 Console.ReadLine();第 14 页第一章 C#基础循环语句do【语句块】while(【布尔表达式】);2.do.while语语句句执行顺序:(1)程序首先执行【语句块】。(2)当程序到达【语句块】的结束点时,计算【布尔表达式】的值,如果【布尔表达式】的值是true,程序跳到do.while语句的开头,否则,结束循环。【例【例1.6】创建一个控制台应用程序,声明一个】创建一个控制台应用程序,声明一个bool类型的变量类型的变量term,并初始化为并初始化为false,再声明一个,再声明一个int类型的数组,并初始化,然后调用类型的数组,
12、并初始化,然后调用do.while语句,通过语句,通过for语句循环输出数组中的值。语句循环输出数组中的值。第 15 页第一章 C#基础static void Main(string args)bool term=false;/声明一个bool类型的变量term并初始化为falseint myArray=new int50,1,2,3,4;/声明一个int类型数组并初始化dofor(int i=0;imyArray.Length;i+)/调用for语句输出数组中所有数据Console.WriteLine(myArrayi);/输出数组中的数据while(term);/设置do.while语句的
13、条件Console.ReadLine();第 16 页第一章 C#基础循环语句for(【初始化表达式】;【条件表达式】;【迭代表达式】)【语句块】3.for语语句句执行顺序:(1)如果有【初始表达式】,则按变量初始值设定项或语句表达式的书写顺序指定它们,此步骤只执行一次。(2)如果存在【条件表达式】,则计算它。(3)如果不存在【条件表达式】,则程序将转移到嵌入语句。如果程序到达了嵌入语句的结束点,按顺序计算for迭代表达式,然后从上一个步骤中for条件的计算开始,执行另一次迭代。第 17 页第一章 C#基础static void Main(string args)int myArray=new
14、 int50,1,2,3,4;for(int i=0;imyArray.Length;i+)Console.WriteLine(“myArray0的值是:1”,i,myArrayi);Console.ReadLine();【例【例1.7】创建一个控制台应用程序,首先声明一个】创建一个控制台应用程序,首先声明一个int类型的数组,然后初类型的数组,然后初始化数组,最后使用始化数组,最后使用for循环语句遍历数组,并将数组中的值输出。循环语句遍历数组,并将数组中的值输出。第 18 页第一章 C#基础循环语句foreach(【类型】【迭代变量名】in【集合类型表达式】)【语句块】4.foreach语
15、语句句foreach语句用于枚举一个集合的元素,并对该集合中的每一个元素执行一次嵌入语句,但是foreach语句不能用于更改集合内容,以避免产生不可预知的错误。foreach语句的基本形式如下:第 19 页第一章 C#基础跳转语句1.break语语句句 跳转语句主要用于无条件的转移控制,跳转语句会将控制跳转到某个位置,这个位置就成为跳转语句的目标,如果跳转语句出现在一个语句块内,而跳转语句的目标却在该语句块之外,则称该跳转语句退出该语句块。break语句只能应用在switch、while、do.while、for、foreach语句中,break语句包含在这几种语句中,否则会出现编译错误。当多
16、条switch、while、do.while、for、foreach语句相互嵌套时,break语句只应用于最里层的语句,如果要穿越多个嵌套层,则必须使用goto语句。第 20 页第一章 C#基础跳转语句2.continue语语句句 continue语句只能应用于while、do.while、for、或foreach语句中,用来忽略循环语句块内位于它后面的代码而直接开始一次新的循环。当多个while、do.while、for或foreach语句相互嵌套时,continue语句使直接包含它的循环语句开始一次新的循环。第 21 页第一章 C#基础跳转语句3.goto语语句句 goto语句用于将控制转
17、移到由标签标记的语句,goto语句可以被应用在switch语句中的case标签、default标签,以及标记语句所声明的标签。goto语句的3种形式如下:goto【标签】goto case【参数表达式】goto default goto【标签】语句的目标是给定标签的标记语句,goto case【参数表达式】语句的目标是它所在的switch语句中的某个语句列表,此列表包含一个具有给定常数值的case标签,goto default语句的目标是它所在的switch语句中的default标签。第 22 页第一章 C#基础跳转语句4.return语语句句 return语句用于退出类的方法,是控制返回方法
18、的调用者,如果方法有返回类型,return语句必须返回这个类型的值,如果方法没有返回类型,应使用没有表达式的return语句。【例【例1.12】创创建一个控制台建一个控制台应应用程序,建立一个返回用程序,建立一个返回类类型型为为string类类型的方法,利型的方法,利用用return语语句返回一个句返回一个string类类型的型的值值,然后在,然后在main方法中方法中调调用用这这个自定个自定义义的方的方法,并法,并输输出出这这个方法的返回个方法的返回值值。第 23 页第一章 C#基础跳转语句static string MyStr(string str)/创建一个string类型方法 stri
19、ng outStr=“您输入的数据是:”+str;/声明一个字符串变量并为其赋值return outStr;/使用return语句返回字符串变量static void Main(string args)Console.WriteLine(“请您输入内容:”);/输出提示信息string inputStr=Console.ReadLine();/获取输入信息Console.WriteLine(MyStr(inputStr);/调用MyStr方法并将结果显示出来Console.ReadLine();第 24 页1.概念:概念:类是对象概念在面向对象编程语言中的反映,是相同对象的集合。类描述了一系列
20、在概念上有相同含义的对象,并为这些对象统一定义了编程语言上的属性和方法。如水果就可以看成一个类,苹果、葡萄都是该类的子类,苹果的生产地、名称、价格相当于该类的属性,苹果的种植方法相当于类的方法。第一章 C#基础1.4 类与对象2.类的声明:类的声明:C#中,类是使用关键字class来声明的类修饰符 class 类名第 25 页【例【例1.13】下面以汽】下面以汽车为车为例声明一个例声明一个类类。第一章 C#基础1.4 类与对象public class Car public int number;/编号 public string color;/颜色 public string brand;/厂
21、家public是类的修饰符,下面介绍几种常见的是类的修饰符,下面介绍几种常见的修饰符。修饰符。a.public:不限制对该类的访问b.protected:只能从其所在类和所在类的子类进行访问。c.internal:只有其所在类才能访问。d.private:只有.NET中的应用程序或库才能访问。e.abstract:抽象类,不允许建立类的实例。f.sealed:密封类,不允许被继承。第 26 页3.对对象的声明和象的声明和实实例化例化:对象是具有数据、行为和标识的编程结构,它是面向对象应用程序的一个组成部分,这个组成部分封装了部分应用程序,这部分程序可以是一个过程、一些数据或一些更抽象的实体。对
22、象包含变量成员和方法类型,它所包含的变量组成了存储在对象中的数据,而其包含的方法可以访问对象的变量,略为复杂的对象可能不包含任何数据,而只包含方法,并使用方法表示一个过程。C#中的对象是把类实例化,这表示创建一个类的实例,“类的实例”和对象表示相同的含义,需要注意的是,“类”和“对象”是完全不同的概念。第一章 C#基础1.4 类与对象第 27 页4.类类与与对对象的关系象的关系类是一种抽象的数据类型,但是其抽象的程度可能不同,而对象就是一个类的实例。类就是有相同或相似结构、操作、和约束规则的对象组成的集合,而对象是某一个类的具体化实例,每一个类都是具有某些共同特征的对象的抽象。第一章 C#基础
23、1.4 类与对象第 28 页1.类类的封装的封装 C#中可以使用类来达到数据封装的效果,这样就可以使数据与方法封装成单一元素,以便于通过方法存取数据,除此之外,还可以控制数据的存储方式。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是通过外部接口这一特定的访问权限来使用类的成员。第一章 C#基础1.4 类的面向对象特性第 29 页2.类类的的继继承承继承是面向对象程序设计中最重要的概念之一。继承允许我们根据一个类来定义另一个类,这使得创建和维护应用程序变得更容易。同时也有利于重用代码和节省开发时间。当创建一个类时,程序员不需要完全重新编写新的数据成员和成员函数,只需要设计
24、一个新的类,继承已有类的成员即可。已有的类被称为基类,新的类被称为派生类。C#中提供了类的继承机制,但只支持单继承,而不支持多继承,即在C#中一次只允许继承一个类,不能同时继承多个类。第一章 C#基础1.4 类的面向对象特性第 30 页【例【例1.16】创创建一个控制台建一个控制台应应用程序,其中定用程序,其中定义义一个一个Shape类类,然后定,然后定义义一个一个Rectangle类类,该类继该类继承于承于Shape类类。在主程序中通。在主程序中通过过Rectangle类类的的对对象象调调用用Shape类类中的方法。中的方法。第一章 C#基础1.4 类的面向对象特性class Shape /
25、父类protected int width;protected int height;public void setWidth(int w)width=w;public void setHeight(int h)height=h;class Rectangle:Shape /派生类 public int getArea()return(width*height);class RectangleTesterstatic void Main(string args)Rectangle Rect=new Rectangle();Rect.setWidth(5);Rect.setHeight(7);C
26、onsole.WriteLine(总面积:0,Rect.getArea();/打印对象的面积Console.ReadKey();第 31 页3.类类的多的多态态多态性意味着有多重形式。在面向对象编程范式中,多态性往往表现为“一个接口,多个功能”。多态性可以是静态的或动态的。在静态多态性中,函数的响应是在编译时发生的。在动态多态性中,函数的响应是在运行时发生的。在同一个范围内对相同的函数名有多个定义。函数的定义必须彼此不同,可以是参数列表中的参数类型不同,也可以是参数个数不同。不能重载只有返回类型不同的函数。下面的实例演示了几个相同的函数 print(),用于打印不同的数据类型。第一章 C#基础
27、1.4 类的面向对象特性第 32 页【例【例1.17】创创建一个控制台建一个控制台应应用程序,在同一个范用程序,在同一个范围围内内对对相同的函数名有多个相同的函数名有多个定定义义。第一章 C#基础1.4 类的面向对象特性class Printdatavoid print(int i)Console.WriteLine(Printing int:0,i);void print(double f)Console.WriteLine(Printing float:0,f);void print(string s)Console.WriteLine(Printing string:0,s);stati
28、c void Main(string args)Printdata p=new Printdata();p.print(5);p.print(500.263);p.print(Hello C#);Console.ReadLine();第 33 页ArrayList类位于System.Collection命名空间下,它可以动地添加和删除元素,可以将ArrayList类看作扩充了功能的数组,但它并不等同于数组。与数组相比,ArrayList类为开发人员提供了以下功能:第一章 C#基础1.5 集合集合a.数组的容量是固定的,而ArrayList的容量可以根据需要自动扩充。b.ArrayList提供添
29、加、删除和插入某一范围元素的方法,但在数组中,一次只能获取或设置一个元素的值。c.ArrayList提供将只读和固定大小包装返回到集合的方法,而数组不提供。d.ArrayList只能是一维形式,而数组可以是多维的。1.5.1ArrayList类类-1.ArrayList类的概述第 34 页第一章 C#基础ArrayList提供了3个构造器,通过这3个构造器可以有3种声明形式,下面分别介绍。(1)默认构造器,将会以默认的大小来初始化内部的数组。构造器格式如下:public ArrayList();通过以上构造器声明ArrayList的语法格式如下:ArrayList list=new Array
30、List();(2)用一个ICollection对象来构造,并将该集合的元素加到ArrayList中。构造器格式如下:public ArrayList(ICollection);通过以上构造器声明ArrayList的语法格式如下:ArrayList list=new ArrayList(arryName);a.list:ArrayList对象名。b.arryName:要添加集合的数组名。第 35 页第一章 C#基础(3)用指定的大小初始化内部的数组。构造器格式如下:public ArrayList(int);通过以上构造器声明ArrayList的语法格式如下:ArrayList list=ne
31、w ArrayList(n);a.list:ArrayList对象名。b.n:对象的空间大小。ArrayList 的常用属性及说明如下表所示。属属 性性说说 明明Capacity获取或设置 ArrayList 可以包含的元素个数Count获取 ArrayList 中实际包含的元素个数IsFixedSize获取一个值,表示 ArrayList 是否具有固定大小IsReadOnly获取一个值,表示 ArrayList 是否只读Item获取或设置指定索引处的元素第 36 页向ArrayList集合中添加元素时,可以使用ArrayList类提供的Add方法和Insert方法,下面对这两个方法进行详细介
32、绍。第一章 C#基础(1)Add方法该方法用来将对象添加到ArrayList集合的结尾处,其语法格式如下:public vitual int Add(Object value)a.value:要添加到ArrayList的末尾处的Object,该值可以为空值。b.返回值:ArrayList索引,已在此处添加了value。2.ArrayList元素的添加第 37 页第一章 C#基础【例【例1.19】声明一个包含】声明一个包含6个元素的一个元素的一维维数数组组,并使用,并使用该该数数组实组实例化一个例化一个ArrayList对对象,然后使用象,然后使用Add方法方法为该为该ArrayList对对象添
33、加元素。象添加元素。2.ArrayList元素的添加代码如下:int arr=new int1,2,3,4,5,6;ArrayList List=new ArrayList(arr);List.Add(7);第 38 页第一章 C#基础(2)Insert方法该方法用来将元素插入ArrayList集合的指定索引处,其语法格式如下:public virtual void Insert(int index,Object value)a.index:从零开始的索引处,应在该位置插入value。b.value:要插入的Object,该值可以为空引用。2.ArrayList元素的添加【例【例1.20】声明
34、一个包含】声明一个包含6个元素的一个元素的一维维数数组组,并使用,并使用该该数数组实组实例化一个例化一个ArrayList对对象,然后使用象,然后使用Insert方法在方法在该该ArrayList对对象的指定索引象的指定索引处处添加一个元素。添加一个元素。代码如下:int arr=new int1,2,3,4,5,6;ArrayList List=new ArrayList(arr);List.Insert(3,7);第 39 页在ArrayList集合中删除元素时,可以使用ArrayList类提供的Clear方法、Remove方法、RemoveAt方法和RemoveRange方法。下面对这4
35、个方法进行详细介绍。(1)Clear方法该方法用来从ArrayList中移除所有元素,其语法格式如下:public virtual void Clear()第一章 C#基础3.ArrayList元素的删除【例【例1.21】声明一个包含】声明一个包含6个元素的一个元素的一维维数数组组,并使用,并使用该该数数组实组实例化一个例化一个ArrayList对对象,然后使用象,然后使用Clear方法清除方法清除ArrayList中的所有元素。中的所有元素。int arr=new int1,2,3,4,5,6;ArrayList List=new ArrayList(arr);List.Clear();第
36、40 页(2)Remove方法该方法用来从ArrayList中移除特定对象的第一匹配项,其语法格式如下:public virtual void Remove(Object obj)第一章 C#基础3.ArrayList元素的删除【例【例1.22】声明一个包含】声明一个包含6个元素的一个元素的一维维数数组组,并使用,并使用该该数数组实组实例化一个例化一个ArrayList对对象,然后使用象,然后使用Remove方法从声明的方法从声明的ArrayList对对象中移除与象中移除与3匹配的元素。匹配的元素。int arr=new int1,2,3,4,5,6;ArrayList List=new Ar
37、rayList(arr);List.Remove(3);第 41 页(3)RemoveAt方法该方法用来移除ArrayList的指定索引处的元素,其语法格式如下:public virtual void RemoveAt(int index)第一章 C#基础3.ArrayList元素的删除【例【例1.23】声明一个包含】声明一个包含6个元素的一个元素的一维维数数组组,并使用,并使用该该数数组实组实例化一个例化一个ArrayList对对象,然后使用象,然后使用RemoveAt方法从声明的方法从声明的ArrayList对对象中移除索引象中移除索引为为3的元素。的元素。代码如下:int arr=new
38、 int1,2,3,4,5,6;ArrayList List=new ArrayList(arr);List.RemoveAt(3);第 42 页(4)RemoveRange方法该方法用来从ArrayList中移除一定范围的元素,其语法格式如下:public virtual void RemoveRange(int index,int count)第一章 C#基础3.ArrayList元素的删除【例【例1.24】声明一个包含】声明一个包含6个元素的一个元素的一维维数数组组,并使用,并使用该该数数组实组实例化一个例化一个ArrayList对对象,然后使用象,然后使用RemoveRange方法从索
39、引方法从索引3处删处删除两个元素。除两个元素。代码如下:int arr=new int1,2,3,4,5,6;ArrayList List=new ArrayList(arr);List.RemoveRange(3,2);第 43 页ArrayList集合的遍历与数组类似,都可使用foreach语句,下面通过一个实例说明如何遍历ArrayList集合中的元素。第一章 C#基础4.ArrayList的遍历【例【例1.25】创创建一个控制台建一个控制台应应用程序,其中用程序,其中实实例化一个例化一个ArrayList对对象,并使用象,并使用Add方方法向法向ArrayList集合中添加两个元素,然
40、后使用集合中添加两个元素,然后使用foreach语语句遍句遍历历ArrayList集合中的各集合中的各个元素并个元素并输输出。出。代码如下:static void Main(string args)ArrayList list=new ArrayList();list.Add(Hello);list.Add(World);foreach(string str in list)Console.WriteLine(str);第 44 页查找ArrayList集合中的元素时,可以使用ArrayList类提供的Contains方法、IndexOf方法和LastIndexOf方法。IndexOf方法和L
41、astIndexOf方法的用法与string字符串类的同名方法的用法基本相同,下面主要对Contains方法进行详细介绍。第一章 C#基础5.ArrayList元素的查找【例【例1.26】声明一个包含】声明一个包含6个元素的一个元素的一维维数数组组,并使用,并使用该该数数组实组实例化一个例化一个ArrayList对对象,然后使用象,然后使用Contains方法判断数字方法判断数字2是否在是否在ArrayList 集合中。集合中。代码如下:int arr=new int1,2,3,4,5,6;ArrayList List=new ArrayList(arr);Console.WriteLine(
42、List.Contains(2);Contains方法用来确定某元素是否在ArrayList集合中,其语法格式如下:public virtual bool Contains(Object item)第 45 页Hashtable通常称为哈希表,它表示键/值对的集合,这些键/值对根据键的哈希代码进行组织,它的每个元素都是一个存储在DictionaryEntry对象中的键/值对,键不能为空,但值可以。Hashtable的构造函数有多种,这里介绍两个最常用的。第一章 C#基础1.5.2 Hashtable类类(2)使用指定的初始容量、默认加载因子、默认哈希代码提供程序和默认比较器来初始化Hashta
43、ble类的新的空实例,语法格式如下:public Hashtable(int capacity)capacity:Hashtable对象最初可包含的元素的近似数目。1.Hashtable概述(1)使用默认的初始容量、加载因子、哈希代码提供程序和比较器来初始化Hashtable类的新的空实例,语法格式如下:public Hashtable()第 46 页第一章 C#基础Hashtable的常用属性及说明如下表所示1.Hashtable概述属属 性性说说 明明Count获取包含在Hashtable中的键/值对的数目IsFixedSize获取一个值,该值指示Hashtable是否具有固定大小IsRe
44、adOnly获取一个值,该值指示Hashtable是否为只读IsSynchronized获取一个值,该值指示是否同步对Hashtable的访问Item获取或设置与指定的键相关联的值Keys获取包含Hashtable中的键的ICollectionSyncRoot获取可用于同步Hashtable访问的对象Values获取包含Hashtable中的值的ICollection第 47 页向Hashtable中添加元素时,可以使用Hashtable类提供的Add方法。下面对该方法进行详细介绍。第一章 C#基础 【例【例1.27】创创建一个控制台建一个控制台应应用程序,其中用程序,其中实实例化一个例化一个
45、Hashtable对对象,并使用象,并使用Add方法方法为该为该Hashtable对对象添加象添加3个元素。个元素。2.Hashtable元素的添加 Add方法用来将带有指定键和值的元素添加到Hashtable中,其语法格式如下:public virtual void Add(Object key,Obgect value)代码如下:Hashtable hashtable=new Hashtable();hashtable.Add(“1”,“what”);hashtable.Add(“2”,“why”);hashtable.Add(“3”,“how”);Console.WriteLine(ha
46、shtable.Count);Console.ReadLine();第 48 页在Hashtable中删除元素时,可以使用Hashtable类提供的Clear方法和Remove方法。下面对这两个方法进行详细介绍。第一章 C#基础 【例【例1.28】创创建一个控制台建一个控制台应应用程序,其中用程序,其中实实例化一个例化一个Hashtable对对象,并使用象,并使用Add方法方法为该为该Hashtable对对象添加象添加3个元素,然后使用个元素,然后使用Clear方法移除方法移除Hashtable中中的所有元素。的所有元素。3.Hashtable元素的删除 (1)Clear方法 该方法用来从Ha
47、shtable中移除所有元素,其语法格式如下:public virtual void Clear()代码如下:Hashtable hashtable=new Hashtable();hashtable.Add(“1”,“what”);hashtable.Add(“2”,“why”);hashtable.Add(“3”,“how”);hashtable.Clear();Console.WriteLine(hashtable.Count);第 49 页第一章 C#基础 【例【例1.29】创创建一个控制台建一个控制台应应用程序,其中用程序,其中实实例化一个例化一个Hashtable对对象,并使用象,
48、并使用Add方法方法为该为该Hashtable对对象添加象添加3个元素,然后使用个元素,然后使用Remove方法移除方法移除Hashtable中中键为键为3的元素。的元素。(2)Remove方法 该方法用来从Hashtable中移除带有指定键的元素,其语法格式如下:public virtual void Remove(Object key)代码如下:Hashtable hashtable=new Hashtable();hashtable.Add(“1”,“what”);hashtable.Add(“2”,“why”);hashtable.Add(“3”,“how”);hashtable.Re
49、move(“3”);Console.WriteLine(hashtable.Count);第 50 页Hashtable的遍历与数组类似,都可以使用foreach语句,这里需要注意的是,由于Hashtable中的元素是一个键/值对,因此需要使用DictionaryEntry类型来进行遍历。DictionaryEntry类型表示一个键/值对的集合。下面通过一个实例说明如何遍历Hashtable中的元素。第一章 C#基础 【例【例1.30】创创建一个控制台建一个控制台应应用程序,其中用程序,其中实实例化一个例化一个Hashtable对对象,并使用象,并使用Add方法方法为该为该Hashtable对
50、对象添加象添加3个元素,然后使用个元素,然后使用foreach语语句遍句遍历历Hashtable中的各个中的各个键键/值对值对并并输输出。出。4.Hashtable的遍历代码如下:static void Main(string args)Hashtable hashtable=new Hashtable();hashtable.Add(“1”,“what”);hashtable.Add(“2”,“why”);hashtable.Add(“3”,“how”);foreach(DictionaryEntry dicEntry in hashtable)Console.WriteLine(dicEn