C_程序设计基础教程PPT课件_第1页
C_程序设计基础教程PPT课件_第2页
C_程序设计基础教程PPT课件_第3页
C_程序设计基础教程PPT课件_第4页
C_程序设计基础教程PPT课件_第5页
已阅读5页,还剩406页未读 继续免费阅读

下载本文档

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

文档简介

精选,1,C#课件,第一章第二章第三章第四章第五章第六章第七章第八章第九章第十章ACCP4.0补充,精选,2,.NET平台以及VisualStudio.NETIDE简介,第一章,返回,精选,3,目标,讨论计算、Internet和应用程序开发的转变了解对.NET的需求解释CLR和IL的角色VisualStudio.NETIDE简介,精选,4,集中式计算,精选,5,客户端/服务器计算,数据大的话网络就不好了,精选,6,分布式计算2-1,精选,7,分布式计算2-2,精选,8,计算方案的转变,精选,9,当前的Internet,精选,10,目前存在的难题,精选,11,Internet的转变,站点、服务和设备彼此协作,共同提供丰富的用户体验。,精选,12,应用程序开发的演变,精选,13,.NET-演变的结果2-1,精选,14,.NET-演变的结果2-2,Internet的转变,计算的转变,应用程序开发的转变,融合计算和通讯,形成组合体,而不是孤岛!,分布式计算本地进行,软件成为服务,应用程序可以由任何人在任何地方使用,.NET,精选,15,精选,16,.NET-将DC(个人计算)向前推进了一步2-1,精选,17,.NET-将DC向前推进了一步2-2,精选,18,.NET所支持的语言,精选,19,语言特定的编译器和运行库,精选,20,代码被执行,IL+元数据,CLR,IL和CLR的使用,精选,21,执行.NET程序,精选,22,Microsoft中间语言,精选,23,公共语言运行库,精选,24,VS.NETIDE帮助系统演示,精选,25,VS.NETIDE设计器演示,精选,26,VS.NETIDE窗口管理演示,精选,27,总结,.NET是以Internet为中心的一种全新的平台通过.NET,可以将用户数据存放在网络上,并且随时随地通过与.NET兼容的任何设备访问这些数据NET独一无二的特征是可以提供多语言支持以.NET语言编写的源代码将被编译两次,第一次由语言特定的编译器从源代码编译为IL,第二次从IL编译为机器码,精选,28,Microsoft.NET平台组件,第二章,返回,精选,29,回顾,.NET是以Internet为中心的一种全新平台通过.NET,可以将用户数据存放到网络上,随时随地通过与.NET兼容的任何设备访问该数据.NET独一无二的特征是提供多语言支持以.NET语言编写的源代码被编译两次,一次由语言特定的编译器从源代码编译成IL,第二次从IL编译成机器码,精选,30,目标,描述Microsoft.NET的核心组件讨论.NET框架并列出其组件谈论.NET优点,精选,31,Microsoft.NET的组件,精选,32,Microsoft.Net平台的功能,Internet协议,XML,Microsoft.NET,构建在XML和Internet协议的基础之上,用于开发新一代软件的一套工具和服务集,旨在使对Internet上的任何资源组进行集成/编排成为可能,可以更快更容易地设计、实现和部署协作式Web解决方案,精选,33,XML,Internet协议,XML,Microsoft.NET,将实际数据与表现形式分开,构建新一代Internet的关键;使得能够对信息进行整理、编程和编辑,提供了一种将数据发布到多种设备的方法,使站点能够进行协作并提供能够彼此交互的Web类型丰富、性能高不用类型转换、穿透防火墙服务组合体,精选,34,SOAP的功能,Internet协议,XML,Microsoft.NET,Microsoft.NET构建在HTTP和SOAP(简单对象访问协议)等现有协议上,SOAP是基于XML/HTTP的协议,SOAP允许以独立于平台的方式访问服务、对象和服务器,SOAP用于在分散的分布式环境中交换信息,精选,35,Microsoft.NET平台,精选,36,.NET框架,.NETEnterpriseServer,.NET生成块服务,选择Windows2000系列,精选,37,Microsoft.NET框架的组件,精选,38,通过服务器系列可以快速生成和管理一个集成的、支持Web的企业系统可伸缩性设计可以与最新的Internet和数据标准实现互操作,安装SQLServer2000,InternetSecurityclassTeststaticvoidMain()intarray1=newint5;Console.WriteLine(10*array12);,本示例的输出结果是0,精选,65,默认值,常用数据类型的默认值:,精选,66,C#中的输入/输出3-1,使用System命名空间中的Console类的方法最常用的方法Console.ReadLine()Console.WriteLine(),精选,67,C#中的输入/输出3-2,usingSystem;classTestDefaultValuesstaticvoidMain()intnumber,result;number=5;result=100*number;Console.WriteLine(“当100与数字0相乘时,结果为1,number,result);,突出显示的代码行起着占位符的作用,即指定变量结果值的显示位置。,index,alignment:formatString)可选整数,指示包含格式化值的区域的最小宽度。如果格式化值的长度小于对齐,则用空格填充该区域。如果对齐为负,则格式化的值将在该区域中左对齐;如果为正,则格式化的值将右对齐。如果没有指定对齐,则该区域的长度为格式化值的长度。如果指定对齐,则需用逗号分隔。G常规,E或F中较短的F浮点数,常规表示法E用E表示法表示的浮点数(其中,E代表10的次幂)N带有分隔符的浮点数(在美国为逗号)C货币,带有货币符号和分隔符(在美国为逗号)D十进制数,仅用于整型X十六进制数,仅用于整型,精选,68,C#中的输入/输出3-3,示例接受了一行的用户输入,并将其回显为输出,精选,69,if结构2-1,用于执行条件分支语法表达式需要始终为Boolean类型的表达式,精选,70,If结构2-2,上面的代码段将显示错误消息错误CS0029:无法将类型“string”隐式转换为类型“bool”,精选,71,switch语句2-1,语法-,每个case分支必须有一个break语句,精选,72,switch语句2-2,Switch结构可以充当多个if语句,精选,73,循环结构,当特定条件为true时执行一组特定的指令,或将特定指令组执行一定次数循环结构的类型-while循环do循环for循环foreach循环,精选,74,while循环,while循环执行一组语句,直至指定条件为falsebreak语句-随时跳出循环continue语句-跳过当前循环,并开始下一循环,精选,75,do循环,语法-,在条件检查之前,循环体中的语句组至少执行一次,精选,76,for循环,语法-,intsum=1;for(count=0;count10;count+)sum+;,for语句循环10次,sum的的最终结果是10。,精选,77,foreach循环2-1,foreach循环用于通过集合或数组来循环语法-,精选,78,foreach循环2-2,usingSystem;publicclassForEachLoopstaticvoidMain(Stringargs)intindex;Stringarray1=newString3;for(index=0;index3;index+)array1index=argsindex;foreach(StringstrNameinarray1)Console.WriteLine(strName);,精选,79,C#中的构造函数,C#中的构造函数与类同名,classMyConstructorExpublicMyConstructorEx()/MyConstructorEx构造函数,精选,80,C#中的析构函数,C#中的析构函数与类也同名,classMyConstructorExpublicMyConstructorEx()/MyConstructorEx构造函数publicMyConstructorEx()/MyConstructorEx析构函数,精选,81,C#的基本类型2-1,C#的数据类型分为两种基本类型值类型int、char和结构引用类型类、接口、数组和字符串,精选,82,C#的基本类型2-2,值类型仅在内存中保存值存储与堆栈中引用类型将对象的地址存储与堆中null表示没有应用任何对象,精选,83,值类型,variableVal是值类型输出结果为100,而不是200,精选,84,引用类型,usingSystem;classDataTypeTestpublicintvariableVal;classDataTypeTestRefstaticvoidMain()DataTypeTestdataTest=newDataTypeTest();dataTest.variableVal=100;funcDataTypeTest(dataTest);Console.WriteLine(dataTest.variableVal);staticvoidfuncDataTypeTest(DataTypeTestdataTest)inttempVar=10;dataTest.variableVal=tempVar*20;,精选,85,值类型和引用类型,精选,86,装箱和取消装箱,装箱是从值类型到引用类型的转换取消装箱是从引用类型到值类型的转换示例,精选,87,C#中的数据类型处理,C#提供了一种“统一类型系统”C#中所有数据类型都是从一个类即object类派生而来的,精选,88,静态成员,成员不与任何特定的对象或类关联仅可以有一个实例,staticintstaticMem;staticintinstanceCount()/instanceCount实现,精选,89,数组,一组具有类似数据类型的值属于引用类型,因此存储于堆中C#中的数组声明语法如下DataTypenumberofelementsArrayName;,精选,90,结构,结构属于值类型可以有方法可以拥有构造函数不能实现继承,structstructExpublicintstructDataMember;publicvoidstructEx()/构造函数实现publicvoidstructMethod1()/structMethod1实现,精选,91,枚举类型2-1,publicclassHolidaypublicenumWeekDaysMonday,Tuesday,Wednesday,Thursday,FridaypublicvoidGetWeekDays(StringEmpName,WeekDaysDayOff)/处理WeekDaysstaticvoidMain()HolidaymyHoliday=newHoliday();myHoliday.GetWeekDays(Richie,Holiday.WeekDays.Wednesday);,程序中声明了仅接受5个值的枚举类型WeekDays,精选,92,枚举类型2-2,C#中的枚举数都有与值相关联的数字默认情况下,枚举数的第一个元素被指定为0值,后续的各个枚举数元素的值依次递增默认值可以在初始化阶段中重写,精选,93,编译和运行,步骤1-在记事本中输入代码步骤2-使用.cs扩展名保存文件步骤3-切换至DOS提示符,再输入以下命令要运行C#文件,可以键入不带扩展名的文件名,精选,94,总结,在C#中,数据类型分为两种基本类型,即值类型和引用类型。装箱是指从值类型到引用类型的转换,而取消装箱是指从引用类型到值类型的转换。C#中的结构内部可以定义方法,也可以拥有构造函数。枚举类型是声明一组命名常数的独特类型。,精选,95,在C#中实现OOP概念,第四章,返回,精选,96,作业点评,变量没初始化结构的构造函数没有指定参数Stringstring引用(字符串)String是固定不变的,在进行字符串连接的时候是新建一个字符串,进行连接后,最后赋值,如果对String赋值多次,就会在内存中保存多个这个对象的副本,浪费系统资源Csc静态其它例子,精选,97,回顾,第三章C#基础C#变量的声明方式如下:AccessModifierDataTypeVariableName;在C#中,数据类型分为两种基本类型,即值类型和引用类型。装箱是指从值类型到引用类型的转换,而取消装箱是指从引用类型到值类型的转换。C#的结构内部可以定义方法,也可以拥有构造函数。,精选,98,目标,在C#中使用构造函数在C#中使用析构函数解释垃圾回收器的工作原理讨论方法重载讨论操作符重载在C#中使用继承讨论C#中的重写,精选,99,C#中的构造函数3-1,是类中的特殊类型的方法是每次创建对象时要调用的函数通常用于初始化与类同名不返回值,精选,100,构造函数3-2,usingSystem;publicclassDaysInYearprivateintdays;publicDaysInYear()days=365;staticvoidMain(Stringargs)DaysInYearnewDaysInYear=newDaysInYear();Console.WriteLine(newDaysInYear.days);,无构造函数输出的结果是0,有构造函数输出结果是365,精选,101,带参数的构造函数3-3,publicclassDaysInYearprivateintdays;publicDaysInYear()days=365;publicDaysInYear(intday)days=day;publicDaysInYear(StringdayOne)days=Convert.ToInt32(dayOne);publicvoidsetDay(intnewDays)days=newDays;,传递不同个数的参数传递个数相同但类型不同的参数,精选,102,C#中的析构函数,由C#中的垃圾回收器调用垃圾回收器通过销毁不再需要或不再被引用的对象来释放内存语法,DaysInYear()/析构函数实现,不能对结构使用析构函数。只能对类使用析构函数。一个类只能有一个析构函数。无法继承或重载析构函数。无法调用析构函数。它们是被自动调用的。析构函数既没有修饰符,也没有参数。,精选,103,垃圾回收器3-1,垃圾回收器的工作原理如果为定义析构函数的对象分配了内存,运行库将把该对象添加到需要销毁的对象的列表中。垃圾回收器定期检查有没有不再被引用的对象如果找到了其名称没有列在销毁器列表中的对象,就立即清除该对象。完成垃圾回收后,将调用销毁器线程,该线程调用有标记为“准备销毁”的对象的销毁方法(析构函数)。,精选,104,垃圾回收器3-2,对象销毁过程发生后,就将该对象从需要销毁的对象列表中删除。因为该对象没有被引用,也没有列在销毁器列表中,所以下次进行垃圾回收时就会将它清除。,精选,105,垃圾回收器3-3,有析构函数的对象占用的资源较多,因为即使不再需要它们,它们仍会在内存中驻留较长时间。销毁过程作为独立的线程执行,该线程会占用大量资源。,GC.Collect()强制进行垃圾回收。,精选,106,方法重载,重载方法有两种方式指定不同个数的参数指定不同类型的参数,精选,107,不同参数个数的方法重载,usingSystem;publicclassAreaprivateintareaVal;publicvoidAreaCal(intradius)areaVal=(22/7)*radius*radius;publicvoidAreaCal(intlength,intbreadth)areaVal=length*breadth;publicvoidAreaCal(intlength,intbreadth,intheight)areaVal=length*breadth*height;,参数的类型相同参数个数不同,精选,108,不同参数类型的方法重载,.publicvoidAreaCal(intradius)areaVal=(22/7)*radius*radius;publicvoidAreaCal(stringshapeName)Console.WriteLine(0的面积没有计算,shapeName);.,方法中参数个数相等,参数类型不同,精选,109,操作符重载3-1,重载操作符意味着使该操作符具有不同的行为使用操作符可以使方程式简单易懂,/第1行intresult=Decimal.Add(54,200);/第2行intresult2=54+200;,上述两行执行同样的操作,但操作符更简便易懂,精选,110,操作符重载3-2,以下是可以重载的操作符列表,publicstaticresult-typeoperatorunary-operator(op-typeoperand)publicstaticresult-typeoperatorbinary-operator(op-typeoperand,op-type2operand2),精选,111,操作符重载3-3,usingSystem;publicstructDistancepublicDistance(intlon,intmag)this.longitude=lon;this.latitude=mag;intlongitude,latitude;publicstaticDistanceoperator-(Distancefirst,Distancesecond)returnnewDistance(first.longitude-second.longitude,first.latitude-second.latitude);/主函数,publicstaticvoidMain()Distancestart=newDistance();DistancenewDistance=newDistance();Distancefinish=newDistance();start.longitude=12;start.latitude=10;finish.longitude=2;finish.latitude=1;newDistance=start-finish;Console.WriteLine(终点的位置在起点以东0度,以北1度。,newDistance.longitude,newDistance.latitude);,精选,112,C#中的继承2-1,将新类作为另一个类的后代来声明和使用避免重复编写代码提供代码重用的巨大好处,精选,113,C#中的继承2-2,有两种继承类型单一继承多重继承,C#只支持单一继承,不支持多重继承,精选,114,单一继承,usingSystem;classCharacterValpublicintsetCharVal(charch)charcharVal=ch;Console.WriteLine(输入的字符是:0,charVal);return(0);classStringVal:CharacterValpublicstringstrVal;publicintsetStrVal(stringstr)strVal=str;Console.WriteLine(输入的字符串是:0,strVal);return(0);,classInheritancestaticvoidMain()StringValobject1=newStringVal();Object1.setCharVal(j);Object1.setStrVal(enjoy);,类StringVal继承CharacterVal因此可以直接引用方法setCharVal,精选,115,密封类,如果不需要类被继承则应当密封该类,sealedclassclassOne/类的实现,通过指定sealed关键字,可以密封任何类,精选,116,方法重写2-1,重写基类中现有方法的步骤:在继承类中声明同名的新方法在该方法名前附加new关键字,精选,117,方法重写2-2,usingSystem;classIntAdditionpublicvoidadd()intfirstNum=1;intsecondNum=2;Console.WriteLine(两数之和是:0,firstNum+secondNum);classStringAddition:IntAdditionnewpublicvoidadd()stringfirstStr=a;stringsecondStr=b;Console.WriteLine(两字符串之和是:0,firstStr+secondStr);,classMethodOverridepublicstaticvoidMain()StringAdditionobjStringAddition=newStringAddition();objStringAddition.add();,在StringAddition类中基类中add方法被重载,精选,118,总结2-1,带参数的构造函数是接受参数的构造函数在C#中,析构函数由垃圾回收器调用。在C#中,有两种方式来重载方法指定不同个数的参数指定不同类型的参数C#允许重载操作符,精选,119,总结2-2,重载操作符意味着使操作符(例如,加法操作符+)在应用于结构或类的某些对象时具有不同的行为C#不支持多重继承要重写基类的现有方法,需要在继承类中声明一个同名的新方法,并在方法名称前附加new关键字,精选,120,C#中的高级OOP概念,第五章,返回,精选,121,回顾,第四章-实现C中的高级OOP概念带参数的构造函数是指接受参数的构造函数。在C#中,析构函数由垃圾回收器调用。在C#中允许方法重载在C#中允许操作符重载C#不支持多重继续要重写基类的现有方法,需要在继承类中声明一个同名的新方法,并在方法名称前附加new关键字,精选,122,目标,讨论多态性使用虚函数讨论抽象基类讨论接口的概念使用接口,精选,123,C#中的多态性6-1,多态性和虚函数关系非常密切多态性允许在运行时实现派生类的方法需要从基类的对象调用派生类方法时,可以使用虚函数,publicclassShapeObjpublicvirtualvoidarea()System.Console.WriteLine(这是一个虚Area方法);,精选,124,C#中的多态性6-2,精选,125,C#中的多态性6-3,publicclassCircle:ShapeObjpublicoverridevoidarea()System.Console.WriteLine(这是Circle的Area()方法);publicclassRectangle:ShapeObjpublicoverridevoidarea()System.Console.WriteLine(这是Rectangle的Area()方法);publicclassSquare:ShapeObjpublicoverridevoidarea()System.Console.WriteLine(这是Square的Area()方法);,定义了三个类(Rectangle、Circle和Square)。这些类是从ShapeObj类派生的,并且重写了ShapeObj类的area()方法。override关键字用于重写基类函数area()。,精选,126,C#中的多态性6-4,publicclassPolymorphismExppublicstaticvoidmain()ShapeObjobjArray=newShapeObj4;objArray0=newShapeObj();objArray1=newRectangle();objArray2=newCircle();objArray3=newSquare();foreach(ShapeObjiterateArrayinobjArray)iterateArray.area();,每个派生自ShapeObj的类的area()方法都被调用,精选,127,C#中的多态性6-5,classSecondExppublicintfirstMethod()return(secondMethod()*thirdMethod();publicvirtualintsecondMethod()return(10);publicintthirdMethod()return(20);classDerivedClass:SecondExppublicoverrideintsecondMethod()return(30);classTestPublicstaticvoidmain()DerivedClassobjDerived=newDerivedClass();System.Console.WriteLine(objDerived.firstMethod();,在DerivedClass中重写基类中的虚函数secondMethod(),精选,128,C#中的多态性6-6,多态性是智能重写多态性-在运行时决定调用哪个方法多态性需要虚函数,而虚函数则需要进行方法重写,精选,129,抽象基类2-1,抽象基类是可以被继承的类不能创建抽象类的对象C#允许在类定义中添加abstract修饰符来创建抽象基类。可以有实现的方法.,精选,130,抽象基类2-2,usingSystem;abstractclassBaseClasspublicabstractvoidabstractFunc();publicvoidnonAbstractFunc()Console.WriteLine(这是nonAbractFunc()方法!);classDerivedClass:BaseClasspublicoverridevoidabstractFunc()Console.WriteLine(这是abstractFunc()方法!);classTeststaticvoidmain()DerivedClassobjDerived=newDerivedClass();BaseClassobjBase=objDerived;objBase.abstractFunc();objDerived.nonAbstractFunc();,在派生类DerivedClass中重写抽象基类的抽象方法abstractFunc(),精选,131,接口4-1,接口相当于纯抽象基类它只能包含抽象方法,而不能包含任何方法实现实现特定接口的类必须实现该接口列出的成员只能有方法属性索引的声明只能是publicinternal方法声明不能有访问修饰符.,publicinterfaceIFileintdelFile();voiddisFile();,精选,132,接口4-2,publicclassMyFile:IFilepublicintdelFile()System.Console.WriteLine(DelFile实现!);return0;publicvoiddisFile()System.Console.WriteLine(DisFile实现!);classTeststaticvoidmain()MyFileobjMyFile=newMyFile();objMyFile.disFile();intretValue=objMyFile.delFile();,类MyFile继承了接口IFile并实现了接口中定义的方法delFile()和disFile(),精选,133,接口4-3,定义一个类:,publicclassBaseforInterfacepublicvoidopen()System.Console.WriteLine(这是BaseforInterface的open方法);,精选,134,接口4-4,publicclassMyFile:BaseforInterface,IFilepublicintdelFile()System.Console.WriteLine(DelFile实现!);return0;publicvoiddisFile()System.Console.WriteLine(DisFile实现!);classTeststaticvoidmain()MyFileobjMyFile=newMyFile();objMyFile.disFile();intretValue=objMyFile.delFile();objMyFile.open();,定义一个继承类BaseforInterface和接口Ifile的新类MyFile,示例输出如下图:,精选,135,多接口2-1,C#允许多接口实现定义一个接口,仅包含一个方法,publicinterfaceIFileTwovoidapplySecondInterface();,精选,136,多接口2-2,publicclassMyFile:BaseforInterface,IFile,IFileTwopublicintdelFile()System.Console.WriteLine(DelFile实现!);return0;publicvoiddisFile()System.Console.WriteLine(DisFile实现!);publicvoidapplySecondInterface()System.Console.WriteLine(ApplySecondInterface实现!);classTeststaticvoidmain()MyFileobjMyFile=newMyFile();objMyFile.disFile();intretValue=objMyFile.delFile();objMyFile.open();objMyFile.applySecondInterface();,本示例实现多接口继承,与前面代码合并后输出的结果如下:,精选,137,显式接口,当两个接口中具有同名的方法时,可以使用显式接口实现,publicinterfaceIFileintdelFile();voiddisFile();publicinterfaceIFileTwovoidapplySecondInterface();voiddisFile();publicclassMyFile:BaseforInterface,IFile,IFileTwo.voidIFile.disFile()System.Console.WriteLine(DisFile的IFile实现);voidIFileTwo.disFile()System.Console.WriteLine(DisFile的IFileTwo实现);.,staticvoidMain(stringargs)MyFileobjM=newMyFile();IFileFobj=objM;/IPict引用Fobj.DisFile();IFileTwoFTobj=objM;/IPictManip引用FTobj.DisFile();,精选,138,接口继承,可以通过将多个接口组合到一起来创建新的接口,interfaceIAllFile:IFile,IFileTwo/如果需要,除了IFile和IFileTwo操作之外,/还可以添加更多操作,精选,139,总结2-1,需要从基类的对象调用派生类方法时,可以使用虚函数重写和多态性之间的区别在于,在多态性中,要调用哪个方法的决定是在运行时做出的。抽象基类是至少包含一个抽象成员(没有实现的方法)的类。不能创建抽象基类的新实例。没有实现的方法称为操作。,精选,140,总结2-2,接口是纯抽象基类。它只能包含抽象方法,而不能包含任何方法实现。一个类可以实现多个接口;事实上,类能够从另一个类继承,也能够实现接口。,精选,141,命名空间,第六章,返回,精选,142,回顾,第五章C#中的高级OOP概念当需要从基类的对象中调用派生的类方法时,虚拟函数十分有用。重写和多态之间的区别是:在多态中,调用哪种方法的决定是在运行时做出的。抽象基类是至少包含一个抽象成员(没有实现的方法)的类。不能创建抽象基类的新实例。没有实现的方法称为“操作”。接口是纯抽象基类。它只能包含抽象方法,而不包含方法实现。一个类可以实现多个接口。,精选,143,目标,解释命名空间创建自定义的命名空间讨论命名空间命名的类型使用命名空间指令为命名空间创建别名了解.NET基类库,精选,144,命名空间,用于避免命名冲突专用于组织代码当代码要在其他某个应用程序中重用时,可以降低复杂性,精选,145,声明命名空间2-1,与类的声明过程相似语法namespaceNameSpaceName/此处列出该命名空间的全部类!,精选,146,声明命名空间2-2,classSamsungTelevision.classSamsungWalkMan.classSonyTelevision.classSonyWalkMan.,namespaceSamsungclassTelevision.classWalkMspaceSonyclassTelevision.classWalkman.,使用命名空间解决命名冲突更简洁、更有条理、结构更清晰,精选,147,嵌套命名空间,在一个命名空间内声明另一个命名空间,.namespaceSonynamespaceTelevisionclassT14inches.classT21inches.,.namespaceSony.TelevisionclassT14inches.classT21inches.,第二种命名空间的方法在C#中可用,在C+中是不可用的,精选,148,访问修饰符和命名空间,命名空间是隐式公共的命名空间不能为受保护的、私有的或内部的,.publicnamespaceSony/错误.privatenamespaceSamsung/错误.,在声明命名空间时前面不应加任何访问修饰符,精选,149,限定命名,要在类所属的命名空间内使用该类,只需要指定该类的名称要在类所属的命名空间之外使用该类,必须使用该类的完全限定名来引用它Namespace.classname,精选,150,非限定命名,namespaceSonyclassTelevision.classWalkMan.TelevisionMyEntertainment=newTelevision();.,在类所属的命名空间内使用该类时,只需指定类名,这称为“非限定名称”,精选,151,限定命名-示例,usingSony;usingSamsung;usingSystem;namespaceSonynamespaceTelevisionclassT14inchespublicT14inches()Console.WriteLine(一台14英寸的电视机);classT21inchespublicT21inches()Console.WriteLine(一台21英寸的电视机);,namespaceSamsungclassTelevisionSony.Television.T14inchesmyEntertainment=newSony.Television.T14inches();classTeststaticvoidMain()Samsung.TelevisionmyEntertainment=newSamsung.Television();,限定命名是在类名称前加上点操作符和名称空间,精选,152,using命名空间指令,使用限定命名会使代码变长且容易混淆使用using命名空间指令可以使长且容易混淆的名称变得简短而且有意义,.Sony.Television.T14inchesTelevision=newSony.Television.T14inches();.,usingSony.Television;T14inchesTelevision=newT14inches();T21inchesTelevision2=newT21inches();,精选,153,有效和无效的命名空间声明,精选,154,二义性名称2-1,usingSony;usingSamsung;classTeststaticvoidMain()TelevisionMyEntertainment=newTelevision();,这会导致错误,因为Sony,Samsung命名空间都有Television类,程序中不知调用哪个命名空间的类,类名称存在二义性。,精选,155,二义性名称2-2,usingSony;usingSamsung;classTeststaticvoidMain()Samsung.TelevisionMyEntertainment=newSamsung.Television();,在类名存在二义性的情况下,只能像代码段中那样使用限定的命名空间,精选,156,using别名指令,using别名指令提供了一种功能,可以从命名空间中只提取一个类,并将其放入作用域中,usingT21inches=Sony.Televisions.T21inches;classTeststaticvoidMain()T21inchesM=newT21inches();,using别名名称=到命名空间或类的完全限定路径,精选,157,基类库,是预先编写的代码的集合,这些代码可以很容易地合并到应用程序中,并在应用程序中加以使用基类库可以被所有.NET支持的语言共享根据其功能,BCL(FCL)中的类被归类到相应的命名空间中,精选,158,最常用的命名空间和类,精选,159,命名空间System.Array3-1,提供用于操纵数组的类和方法,usingSystem;classTeststaticvoidMain()intarrayToReverse=1,2,3,4,5,6,7;Console.WriteLine(反转前数组的内容:n);displayArray(arrayToReverse);Array.Reverse(arrayToReverse);Console.WriteLine(nn反转后数组的内容:n);displayArray(arrayToReverse);,publicstaticvoiddisplayArray(ArraymyArray)foreach(intarrValueinmyArray)Console.WriteLine(arrValue);,精选,160,命名空间System.Array3-2,上示例的输出结果,精选,161,命名空间System.Array3-3,命名空间System.Array其他方法,精选,162,命名空间System.Threading3-1,在程序中实现多线程同时运行同一程序或程序不同部分的一个或多个实例,精选,163,命名空间System.Threading3-2,示例,usingSystem;usingSystem.Threading;classTeststaticvoidMain()ThreadnewThread=newThread(newThreadStart(ThreadToRun);newThread.Start();ThreadToRun();staticvoidThreadToRun()for(intcount=1;countnum2,具有不同数量的参数的方法重载,精选,321,方法重载4-4,intgreatest(intnumbers)inttemp=numbers0;for(inti=1;inumbers.Length;i+)if(tempnumbersi)temp=numbersi;returntemp;doublegreatest(doublenumbers)doubletemp=numbers0;for(inti=1;inumbers.Length;i+)if(temp149)Console.WriteLine(合格);elseConsole.WriteLine(“不合格);,派生类,publicstaticvoidMain(stringargs)UnderGraduateobjUnderGraduate=newUnderGraduate();objUnderGraduate.GetInfo();objUnderGraduate.DispInfo();objUnderGraduate.ChkEgbl();,

温馨提示

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

评论

0/150

提交评论