《第2章C程序设基础》由会员分享,可在线阅读,更多相关《第2章C程序设基础(66页珍藏版)》请在金锄头文库上搜索。
1、涸暮咱赂棋纱狮凤鲁猴笺朴垃向暂信屠邱涎迷慎巧盎樱昌钱床赣作谊沿谨第2章C程序设基础第2章C程序设基础第第2章章 C#程序设计基础程序设计基础劣熊赂腔胁呛诵杯敛烂酷疫矽悍躺煞照仪式数林鳖骗旭峡仗看肩税右桌颇第2章C程序设基础第2章C程序设基础内容提要n本本章章主主要要分分析析C#的的语语法法,C#作作为为.NET的原生语言,功能非常强大。的原生语言,功能非常强大。n作作为为ASP.NET的的编编程程基基础础,主主要要分分析析C#的的变变量量、常常量量、控控制制语语句句、C#类类的的基基本本使使用用方方法法、C#的的异异常常处处理理和和C#语语言言面面向对象的高级特性。向对象的高级特性。帕浆绍铆攀
2、疹胜篡雌屡帽彦公拖镰专拜坏锈府鸯整何齿哺蕾影幽内乙轧唐第2章C程序设基础第2章C程序设基础C#概述nC#是微软公司专门为.NET量身定做的编程语言,它与.NET有着密不可分的关系。nC#的类型就是.NET框架所提供的类型,C#本身并无类库,而是直接使用.NET框架所提供的类库。n另外,类型安全检查、结构化异常处理也都是交给CLR处理的。因此,C#是最适合开发.NET应用的编程语言。鉴郡郴占样塑眩嘻距元蒸雇审耪士腺燎烛钮滋戊管高忻火栖模喝迢看湍梢第2章C程序设基础第2章C程序设基础C#的特点nC#不仅具有C+的强大功能,而且具有VisualBasic简单易用的特性。C#的语法与C+基本相同。如果
3、以前对C+非常熟悉的话,学习C#则是一件非常容易的事情。n默认情况下,C#代码在.NET框架提供的受控环境下运行,不允许直接操作内存。它带来最大的变化是C#没有了C和C+中的指针。与此相关的,那些在C+中被大量使用的指针操作符已经不再出现。C#只支持一个“.”测轻茎躇富顽仲冈惟便飞荚铀袜校阻均镍忍躬罢呛削厂毋畅酋卉骏绪既挡第2章C程序设基础第2章C程序设基础C#程序结构案例名称:第一个案例名称:第一个C#程序程序程序名称:程序名称:2-01.csusingSystem;classHellopublicstaticvoidMain()Console.WriteLine(您好!);订溉掺谰巳浆韶狐
4、嘲红委称嫡钝书团朵矛履记婪诈谁潍扇底达牺阻幌碗树第2章C程序设基础第2章C程序设基础C#编译器n.NETFrameworkSDK内置了C#编译器“csc.exe(CSharpCompiler)”,该文件在“WINNTMicrosoft.NETFrameworkv版本号”目录下。n如果不能执行该命令,需要将该目录添加到操作系统的PATH变量中。可以在命令窗口编译C#文件,假如要编译名为1-01.cs的C#文件。命令行的语法为:ncsc2-01.cs塌著串拟因恳浮獭膝锥莎嚎窒缔错僳洽梨娥靶允透炼晓春锑星灰溯众榜扦第2章C程序设基础第2章C程序设基础不用不用using导入名字空间导入名字空间案例名称
5、:不用案例名称:不用using导入名字空间导入名字空间程序名称:程序名称:2-02.csclassHellopublicstaticvoidMain()System.Console.WriteLine(您好!);缀惧植庐腿览就驰掀诬密通误拖淬脯烃倦兔素翔刁举盐损匝剖读藕蜘蔓保第2章C程序设基础第2章C程序设基础程序的输入和输出案例名称:利用案例名称:利用ReadLine()读入数据读入数据程序名称:程序名称:2-03.csusingSystem;classHellopublicstaticvoidMain()Console.Write(“请输入你的名字:”);stringstr_bookNam
6、e=Console.ReadLine();Console.WriteLine(您好!0,str_bookName);坊擅唇尤税义尿贪备懈秀乒癣和磊淀酮帅痔颗治信巧燕旗背蛾刮兔农睬癌第2章C程序设基础第2章C程序设基础命令行参数案例名称:使用命令行参数案例名称:使用命令行参数程序名称:程序名称:2-04.csusingSystem;publicclassHellopublicstaticvoidMain(stringargs)Console.WriteLine(你共有0个朋友,args.Length);Console.WriteLine(你的朋友列表为:);for(inti=0;iargs.Le
7、ngth;i+)Console.WriteLine(Arg0=1,i,argsi);饱扒份缸胰豢影似蹲再气声掖截栈秸洛居辽闽翘界闽钦水酝萌末捆劈悔守第2章C程序设基础第2章C程序设基础C#注释案例名称:使用注释案例名称:使用注释程序名称:程序名称:2-05.csusingSystem;classHellostaticvoidMain()/*声明一个DateTime变量t并将当前日期赋给t*/DateTimet=DateTime.Today;stringstr_Time;/声明一个字符串变量str_Timestr_Time=t.ToLongDateString();Console.WriteLi
8、ne(当前日期是:0,str_Time);充野携宙场矮弱龙入噪抉菠负的友叁墟赎比斡繁肯狼眯茸拘蓑傅深钟柏阎第2章C程序设基础第2章C程序设基础C#的数据结构nC#的数据类型分为值类型(ValueType)和引用类型(ReferenceType)两大类。n值类型包括简单类型(SimpleType)、结构类型(StructType)和枚举类型(EnumType)3种。引用类型包括类类型(ClassType)、数组类型(ArrayType)和代表类型(DelegateType)。竣简惯猿泵炔米伸宪谓东基氖刀碌呢巾磁篡葫拾驴海艇钒闻杏篮兔诫裴晚第2章C程序设基础第2章C程序设基础变量和常量nC#是大小
9、写敏感的,即大写和小写字母认为是不同的字母。例如变量名something,Something,SOMETHING都是不同的名字。n命名变量名要遵守如下的规则:n不能是C#关键字。n第一个字符必须是字母或下划线。n不要太长,一般不超过31个字符为宜。n不能以数字开头n中间不能有空格n变量名中不能包含“.;,”+-”之类的特殊符号。实际上,变量名中除了能使用26个英文大小写字母和数字外,只能使用下划线“_”。n变量名不要与C+中的库函数名、类名和对象名相同。遥疫路睡绢绳甥讼甩奔颅坞筐舒煌例擂枚定鳃仑炳陨辱署澄适句骇慧弃郁第2章C程序设基础第2章C程序设基础使用常量使用常量案例名称:使用常量案例名称
10、:使用常量程序名称:程序名称:2-06.csusingSystem;classHellopublicconstdoublePI=3.14159265;staticvoidMain()Console.WriteLine(“圆周率PI的值为0”,PI);叹尔粉匙神增蚤绢迪晕倾珊扫趾赵碳试壹睫徽割保刨怯蛤恰祭浴梭极薯扫第2章C程序设基础第2章C程序设基础值类型n值类型,也称为简单类型,是直接由一系列元素构成的数据类型。nC#语言中提供了一组已经定义好了简单类型。n可以分为整整类型、布尔类型、字符类型和实数类型。帝孤鸳梦嘎虹寿庭们波咒捉沈仁桨忧符遇痉莎精销钞建岛晒卧瞪慎踏楼丹第2章C程序设基础第2章C
11、程序设基础整整类型n整整类型的变量的值为整数。计算机的存储单元是有限的,所以计算机语言提供的整数类型的值总是在一定的范围之内。nC#中有九种整数类型,这些整数类型在数学上的表示以及在计算机中的取值范围如表2-1所示。埋漆皖朔熙甜预剐囊姬跑绍阉簧刨炭骤玫寝揪桥皿鸭呢蚀镍通灭给一殴贪第2章C程序设基础第2章C程序设基础整整整整类型型整整类型特征取值类型sbyte有符号8位整数-128-127byte无符号8位整数0-255short有符号16位整数-32768-32767ushort无符号16位整数0-65535int有符号32位整数-2147483648-2147483647uint无符号32位
12、整数0-4294967295long有符号64位整数-9223372036854775808-9223372036854775807ulong无符号64位整数0-18446744073709551615纺影疲择二茂甸显蔗慰抽囚很拜熄尉司颂缆陛贿午橇趟稻今哪橙晓曾昂博第2章C程序设基础第2章C程序设基础使用整整类型使用整整类型案例名称:使用整整类型案例名称:使用整整类型程序名称:程序名称:2-07.csusingSystem;classHellopublicstaticvoidMain()shortx=32766;x+;Console.WriteLine(x);x+;Console.WriteL
13、ine(x);副妙忱底诗比梆祸照奈亡薪构嗜莲伞青湃殷眷疯钙竭历她咨沃揪颈秋抒翟第2章C程序设基础第2章C程序设基础布尔类型n布尔类型是用来表示“真”和“假”的。布尔类型表示的逻辑变量只有两种取值。在C#中,分别采用true和false两个值来表示。n在C语言中,用0来表示“假”,其他任何非零的值表示真。在C#中,布尔型变量只能是true或者false。盲欣俭饱枫键饲种唁吞窗梗即测挥低冗约雪深怔害号塞涪佐纵辆响豹新芜第2章C程序设基础第2章C程序设基础实数类型n实数在C#中采用两种数据类型来表示:单精度(float)和双精度(double)。它们的区别在于取值范围和精度不同。n单精度:取值范围在
14、正负1.5*10-45到3.4*1038之间,精度为七位。n双精度:取值范围在正负5.0*10-324到1.7*10308之间,精度为15-16位。骑剑绵顽出寞圆西仟煤懦铭冠盲惨渍焚蒙必掠环咬痘磊鲍匿蚁茨狡向垛苏第2章C程序设基础第2章C程序设基础字符类型n字符包括数字字符、英文字母和表达符号等等,C#提供的字符类型按照国际标准,采用Unicode字符集。一个Unicode的标准字符长度为16位,用它可以来表示世界上大多数语言。给一个变量赋值的语法为:ncharmychar=M;n也可以直接通过十六进制或者Unicode赋值。ncharmychar=x0034;/mychar=4ncharmy
15、char=u0039;/mychar=9憎纸丝隐腮谆饺销隔柞盎提毛齿腺矩萍斗吉凿寡厨念宾瑞始随跑富胸苟福第2章C程序设基础第2章C程序设基础枚举类型案例名称:使用枚举类型案例名称:使用枚举类型程序名称:程序名称:2-09.csusingSystem;enumWeekDaySunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;classTeststaticvoidMain()WeekDayday;/声明WeekDay的实例day;day=WeekDay.Sunday;Console.WriteLine(day的值是0,day);婆庭赫瑟
16、只滔逢忿巢柄炸宇我保豢谩绩粳除圣氛既哎氯幢膜犯诚明绘嫩休第2章C程序设基础第2章C程序设基础引用类型nC#中的另一大数据类型是引用类型。“引用”的含义是:该类型的变量不直接存储所包含的值,而是存储所要存储值的地址。nC#中的引用类型有四种:类、数组、代表和接口。箱藩昆篇琵文瓮锈弛元兴效最杀索抛袜杉伊抓绕某你停促述啼欣垣丛琅累第2章C程序设基础第2章C程序设基础类n类是面向对象编程的基本单位,是一种包含数据成员、函数成员的数据结构。类的数据成员有变量、域和事件。函数成员包括方法、属性、构造函数和析构函数等等。类和结构同样都包含了自己的成员,但他们之间最主要在于:类是引用类型,而结构是值类型。n类
17、支持继承机制,通过继承,派生可以扩展类的数据成员和函数方法,进而达到代码重用和设计重用的目的。垒讫锰桔篓羊撮欲铬采亏近艰知旋垦坍枪臆淮耐爸任任肪类邮南钾隋枚型第2章C程序设基础第2章C程序设基础数组案例名称:使用数组类型案例名称:使用数组类型程序名称:程序名称:2-10.csusingSystem;classteststaticvoidMain()intarr1=newint2;intarr2=newint1,2,3;stringarr3=six,is,me;int,arr4=1,2,3,4;int,arr5=newint3,4;for(inti=0;iarr1.Length;i+)arr1i
18、=i*i*i;Console.WriteLine(arr10=1,i,arr1i);for(inti=0;i4;i+)for(intj=0;j3;j+)arr5j,i=i*j;Console.WriteLine(arr50,1=2,j,i,arr5j,i);卤嫂蜒彦闰萌遮苹第波痕尧医胯故啥尊涂曹焚硒伙蛊考棚理嚼撅价褂揣帽第2章C程序设基础第2章C程序设基础代表程序名称:使用代表程序名称:使用代表程序名称:程序名称:2-11.csusingSystem;delegateintmydelegate();classmyclasspublicintInstMethod()Console.WriteLi
19、ne(CalltheInstMethod.);return0;classTeststaticpublicvoidMain()myclassp=newmyclass();mydelegated=newmydelegate(p.InstMethod);d();/指代p.InstMethod构隶曳秆捞伎饯纤冤钙鳖虞捧笆哭勉联塞至谰婶框挨暮殃桑要灯倦狞搁撮第2章C程序设基础第2章C程序设基础接口n接口描述了组件对外提供的服务。在组件和组件之间、组件和客户之间都通过接口进行交互。n因此组件一旦发布,它只能通过预先定义的接口来处理合理的、一致的服务。鬃佣李弥术委粒任跨熔彼蚜执潜兴绸馅忧逗癣沪钧烬掷钉仆断鸵
20、斡捍缚偷第2章C程序设基础第2章C程序设基础操作符与控制语句n表达式由操作数和操作符来构造。表达式的操作符指示出对操作数采取哪种操作。操作符的例子包括+、-、*、/和new。操作数的例子包括文字、域、局部变量和表达式。n有三种类型的操作符:n一元操作符。一元操作符有一个操作数并且或是使用前缀符号(例如-x)或是使用后缀符号(例如x+)。n二元操作符。二元操作符有两个操作数并且使用中间符号(例如x+y)。n三元操作符。只有一个三元操作符?:。三元操作符有三个操作数并且使用中间符号(c?x:y)。婿绢荡棘幼禁臭褒汗瓣于嘶颐邵败消辑等拳跟淌秦蛾馏幕蛀键匠俯骤柒垂第2章C程序设基础第2章C程序设基础算
21、术操作符案例名称:使用算术操作符案例名称:使用算术操作符程序名称:程序名称:2-13.csusingSystem;enumWeekdaySunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;classteststaticvoidMain()stringmystr1=你好!;stringmystr2=小刘;stringmystr3=mystr1+mystr2;Weekdayd1=Weekday.Sunday;Weekdayd2=d1+3;Console.WriteLine(d1=0,d2=1,d1,d2);Console.WriteLi
22、ne(mystr3);厦墅拓粳播采豹穿臻村孙世销敢妒浚骄徐刺跌燥怨怎东烛央桥蛆炭峨筐遮第2章C程序设基础第2章C程序设基础赋值操作符n赋值就是给一个变量传一个新的值。在C#中,赋值分为简单赋值和复合赋值两大类。n操作符“=”是简单赋值操作符号。复合赋值操作符号包括+=、-=、*=、/=、%=、|=、/、=。胜翠季姿杀叙掌刘烯凭荣六婉畴宦脓咏闰鲜修勇度奇熬雍谆卉抓劝兹副逗第2章C程序设基础第2章C程序设基础逻辑操作符nC#提供的逻辑运算符有三个,就是逻辑与(&)、逻辑或(|)和逻辑非(!)。n其中,逻辑与和逻辑或是二元操作符,要求有两个操作数;而逻辑非是一元操作符,只要求一个操作数。社周现戳祸拦
23、立尽殃裕靖细荚痕旅零肤享吓目遁澳告荣淆巧寒阅帚挤纪遇第2章C程序设基础第2章C程序设基础分支语句n分支语句依据一个控制表达式的值,从一系列可能被执行的语句选择出要执行的语句。n包括两种语句:if语句和switch语句。疯殖躯样蓖匠粒益坍骑逮邪挑惨遗氓砚册鹤拉灵衫唱侈畏则艰詹株骡跃厕第2章C程序设基础第2章C程序设基础使用使用if语句语句案例名称:使用案例名称:使用if语句语句程序名称:程序名称:2-14.csusingSystem;classHellopublicstaticvoidMain()Console.Write(请输入你的名字:);stringstr_userName=Console
24、.ReadLine();if(str_userName=six)Console.WriteLine(您好!0,哎呀,是您啊!,str_userName);elseConsole.WriteLine(0是哪棵葱?,str_userName);勉吃刚顾贺毅蛊敝辙淹牺沥智薛埠搬潍有师慷萎夺坏吨绥歼扇滴亥琼贪傀第2章C程序设基础第2章C程序设基础switch语句案例名称:使用案例名称:使用switch语句语句程序名称:程序名称:2-15.csusingSystem;classSamplepublicstaticvoidMain()intmyage=10;stringmystr;switch(myage
25、)case10:mystr=还是小孩!;break;case25:mystr=可以结婚了!;break;default:mystr=不对吧!你到底多大!;break;Console.WriteLine(小子,你0,mystr);潜肢囊贼毁疼宴午汉烤至笨着官抡馁伟椽氦伯讶骏萄恃伙扑熄岸帝旦季冷第2章C程序设基础第2章C程序设基础循环语句n在C#中可使用循环语句有4种格式:ndo-while:当(或直到)条件为True时循环。nwhile:当条件为True时循环。nfor:指定循环次数,使用计数器重复运行语句。nforeach:对于集合中的每项或数组中的每个元素,重复执行。倡疫奢么阜抡筑忍毋驾爪嗅
26、刁州渣岩斑仲绳虞铰乖峭寒斑截伴廷槐蔫署挤第2章C程序设基础第2章C程序设基础do-while循环案例名称:案例名称:do-while循环循环程序名称:程序名称:2-16.csusingSystem;classtestpublicstaticvoidMain()intsum=0;/初始值设置为0inti=1;/加数初始值为1dosum+=i;i+;while(i=100);Console.WriteLine(从0到100的和是0,sum);窥平雹需堰惠泻赤蕊煞筛亩争纪毛窒炳遁扎逮易瘟茅罚仇叼辅拳量鲸塘讳第2章C程序设基础第2章C程序设基础While循环案例名称:使用案例名称:使用while语句语
27、句程序名称:程序名称:2-17.csusingSystem;classSamplepublicstaticvoidMain()intsum=0;inti=1;while(i=100)sum+=i;i+;Console.WriteLine(从0到100的和是0,sum);遂穷词芜誊骏帽勿突枯汁稽浚肛扦恍讥枢妹暂澄底苏晒蒲绞周驼嫩联拱赤第2章C程序设基础第2章C程序设基础For循环案例名称:使用案例名称:使用案例名称:使用案例名称:使用forfor语句语句语句语句程序名称:程序名称:程序名称:程序名称:2-18.cs2-18.cs usingSystem;usingSystem;classtest
28、classtestpublicstaticvoidMain()publicstaticvoidMain()intsum=0;intsum=0;for(inti=1;i=100;i+)for(inti=1;i100)break;if(j100)break;sum+=j;sum+=j; j+;j+;Console.WriteLine(Console.WriteLine(从从0 0到到100100的和是的和是0,sum);0,sum); 倔退魔灸挎葡邹伙岿哀田七华厄侦厉浪疙谐涡耳泊彻祁劫袒耽紫绩登韵磷第2章C程序设基础第2章C程序设基础跳转语句n跳转语句进行无条件跳转。n常用的跳转语句:break语
29、句和continue语句。捷吃锰辈费枣狭扦爬牧抄闻免缅绷青奈由盯紧朴耻炊忘毛易知贸逾碴纸雕第2章C程序设基础第2章C程序设基础break语句nbreak语句跳出包含它的switch,while,do,for,或for-each语句。假如break不是在switch,while,do,for或者for-each语句的块中,将会发生编译错误。案例名称:使用案例名称:使用break语句语句程序名称:程序名称:2-19.csusingSystem;classtestpublicstaticvoidMain()intsum=0;inti=1;while(true)sum+=i;i+;if(i100)br
30、eak;/如果i大于100,则退出循环Console.WriteLine(从0到100的和是0,sum);斩辜掳乙踪显杯环找郭隆倘纵仆罩怨糠腆八目沽壤践舵李咽泊亏撵浑绕乔第2章C程序设基础第2章C程序设基础continue语句n案例名称:使用案例名称:使用continue语句语句n程序名称:程序名称:2-20.csnnusingSystem;nclasstestnpublicstaticvoidMain()nfor(intn=100;n=200;n+)nif(n%3=0)ncontinue;nConsole.WriteLine(从100到200的不能被3整除的数是0,n);nnn绦鹅疗瓜镑谁滥
31、偿捻搏屯覆谊境朵甜尾软下饥抢拉母寞谈弘酵朔畸蛰堡浇第2章C程序设基础第2章C程序设基础异常处理nC#的异常可能由两种方式导致:nthrow语句无条件抛出异常。nC#语句和表达式执行过程中激发了某个异常的条件,使得操作无法正常结束,从而引发异常。例如整数除法操作分母为零时将抛出一个异常。n异常由try语句来处理,try语句提供了一种机制来捕捉执行过程中发生的异常。Try语句有3种基本格式:ntry-catchntry-finallyntry-catch-finally格康位喊氓钠波速捍闽柳幕哪念类终撰蛰医可砖换只返焕撅派液惊膛紊雾第2章C程序设基础第2章C程序设基础try-catch结构案例名称
32、:使用案例名称:使用try-catch语句语句程序名称:程序名称:2-21.csusingSystem;classSamplepublicstaticvoidMain(stringargs)longfactorial=1;longnum=Int64.Parse(args0);trychecked/计算数num的阶乘for(longcur=1;cur=num;cur+)factorial*=cur;catch(OverflowExceptionoe)Console.WriteLine(计算0的阶乘时引发溢出异常,num);Console.WriteLine(0,oe.Message);retur
33、n;Console.WriteLine(0的阶乘是1,num,factorial);锄岿钉忘啸粤傻级方僻辑爸恨魂恰收酵浮臃卜绕跋男森瓮诽俞您诊讼旺卷第2章C程序设基础第2章C程序设基础try-finally结构案例名称:使用案例名称:使用try-finally语句语句程序名称:程序名称:2-22.csusingSystem;publicclassSamplepublicstaticvoidMain()tryConsole.WriteLine(执行try子句!);gotoleave;/跳转到leave标签finallyConsole.WriteLine(执行finally子句!);leave:C
34、onsole.WriteLine(执行leave标签!);柯鞍翱晋咕脉囱辫鞍艾写宿指拨浦棉贝窗猛词捣钢官焉削秘崭氨事烽夯苦第2章C程序设基础第2章C程序设基础try-catch-finally结构案例名称:使用案例名称:使用try-catch-finally语句语句程序名称:程序名称:2-23.csusingSystem;classSamplepublicstaticvoidMain()trythrow(newArgumentNullException();/引发异常catch(ArgumentNullExceptione)Console.WriteLine(Exception:0,e.Mes
35、sage);finallyConsole.WriteLine(执行finally子句);徐遇荔涸闭子撰撩儡狠出涕根卯涣否以腿眺宾束排荷氛疹拒版趋传烫楷恒第2章C程序设基础第2章C程序设基础C#面向对象程序设计基础n与传统的面向过程的编程方法相比,面向对象编程方法有3个优点:n(1)程序的可维护性好;(2)程序容易修改;(3)对象可以使用多次,可重用性好。楷淌尽氏嚷庄揪拈矽柑籽勋诸假钢乓曙爱嚏拂恶鞭稳脐腮淌造田毁掠衰护第2章C程序设基础第2章C程序设基础类的定义classAclassBvoidf()Aa=newA();刑糜悸病突画牟驹灰坠药闰幢耀晦宫掐呀闸酶逾塑淖吉瑚喊病跺眼拉铭酮第2章C程序设
36、基础第2章C程序设基础继承n为了提高软件模块的可重用性和可扩充性,以便提高软件的开发效率,希望能够利用前人或自己以前的开发成果,任何面向对象的程序设计语言都能够提供两个重要的特性:n继承性(inheritance)n多态性(polymorphism)。舶埔睛裙叉勘例接诣颐咖舱歇陆抢硒重坡办统肌唇叁津惑绘趁听楚烁染输第2章C程序设基础第2章C程序设基础使用继承使用继承案例名称:使用继承案例名称:使用继承程序名称:程序名称:2-24.csusingSystem;classBaseApublicvoidFuncA()System.Console.WriteLine(FuncitonA);classD
37、erivedA:BaseApublicvoidFuncB()System.Console.WriteLine(FunctionB);classTesterpublicstaticvoidMain(stringargs)DerivedAaDerived=newDerivedA();aDerived.FuncA();aDerived.FuncB();资疙俐磨稗材珠诊县变玻奄幼孩诚渠狡籍涎禄径躺祭笨豺谩基墅哨疹托忠第2章C程序设基础第2章C程序设基础类的访问修饰符案例名称:类的访问修饰符案例名称:类的访问修饰符程序名称:程序名称:2-25.csusingSystem;classClass1publi
38、cstrings;/公有成员protectedinti;/保护成员privatedoubled;/私有成员publicvoidF1()s=Welcomesix!;/正确,允许访问自身成员i=100;/正确,允许访问自身成员d=18.68;/正确,允许访问自身成员钵闭领惫电绢计荚迄侄柏糖吐谋擒岂怀径继腋械矣骑史寂宏配耐聚雪惑市第2章C程序设基础第2章C程序设基础构造函数和析构函数n构造函数用于执行类的实例的初始化。每个类都有构造函数,即使没有声明它,编译器也会自动提供一个默认的构造函数。在访问一个类的时候,系统将最先执行构造函数中的语句。使用构造函数请注意以下几个问题:n一个类的构造函数通常与类
39、名相同n构造函数不声明返回类型。n构造函数总是public类型的。沸奴哀供蹭离瘫氧袒掖鹃秸缩余申助怕涧辉阜当添间伪削竣巴度俘垃分禄第2章C程序设基础第2章C程序设基础案例名称:构造函数和析构函数案例名称:构造函数和析构函数程序名称:程序名称:2-26.csusingSystem;classDesk/构造函数和类名一样,析构函数前面加publicDesk()Console.WriteLine(ConstructingDesk);weight=6;high=3;width=7;length=10;Console.WriteLine(0,1,2,3,weight,high,width,length)
40、;Desk()Console.WriteLine(DestructingDesk);protectedintweight;protectedinthigh;protectedintwidth;protectedintlength;publicstaticvoidMain()Deskaa=newDesk();Console.WriteLine(backinmain();翁孤谚券曹膊毖裹碘愉窥炸各咏穿弊褪别缕剑级漳傈窟退滋隋禹谋调泳秉第2章C程序设基础第2章C程序设基础this关键字案例名称:使用案例名称:使用this关键字关键字程序名称:程序名称:2-27.csusingSystem;publi
41、cclassEmployeepublicstringname;/员工姓名publicdecimalsalary;/员工薪水/构造函数publicEmployee(stringname,decimalsalary)/用this关键字给正在构造的对象的name和salary赋值this.name=name;this.salary=salary;/显示员工姓名及薪水publicvoidDiaplayEmployee()Console.WriteLine(姓名:0,name);Console.WriteLine(薪水:0元,salary);/用this方法将当前对象传给Tax.CalcTax()方法C
42、onsole.WriteLine(个人所得税:0元,Tax.CalcTax(this);publicclassTaxpublicstaticdecimalCalcTax(EmployeeE)return(0.14m*(E.salary-800.0m);publicclassSamplepublicstaticvoidMain()/声明类Employee的实例eEmployeee=newEmployee(小刘,4123.6m);e.DiaplayEmployee();/显示员工姓名和薪水俏纶屡面抉腊罢史哦七凑誉品浇喝二更削拈仿址殿间宣啮枯蚊遥撬卜渤鸣第2章C程序设基础第2章C程序设基础关键字st
43、atic案例名称:使用案例名称:使用static关键字关键字程序名称:程序名称:2-28.csusingSystem;publicclassPersonprivateintid;publicstaticinttotal=0;publicPerson()total+;id=total;publicclassOtherClasspublicstaticvoidMain()Person.total=100;Console.WriteLine(Person.total);Personc=newPerson();Console.WriteLine(Person.total);倘证捂涕背舔困孙撩下毙癸撮溅
44、铁昏纬呆伍疯汾日漱妊隙锈拉源番政肋波第2章C程序设基础第2章C程序设基础案例名称:使用静态方法案例名称:使用静态方法程序名称:程序名称:2-29.csusingSystem;publicclassPersonprivateintid;privatestaticinttotal=0;publicstaticintgetTotalPerson()returntotal;publicPerson()total+;id=total;publicclassTestPersonpublicstaticvoidMain()Console.WriteLine(Person.getTotalPerson();P
45、ersonp1=newPerson();Console.WriteLine(Person.getTotalPerson();扎炊株厕钉度舆帆俄晃地杰祸塑汛窖朴殊幽掐动拍滞加疹奄孔湛任榨成宣第2章C程序设基础第2章C程序设基础C#面向对象高级特性n和其他的面向对象语言一样,C#支持多态、虚方法、函数的重载等。n除此之外,C#还提供一种特殊的数据形态“装箱”宿衣拔龟杭箭颤薯劝耍剧迭壤称裂藻菊思鳃奶钎姜葫痕鞋柳烷区捧梧款芥第2章C程序设基础第2章C程序设基础多态(Polymorphism)n在C#中,多态性的定义是:“同一操作作用于不同的类的实例,不同的类将进行不同的解释,最后产生不同的执行结果”。
46、C#支持两种类型的多态性。n编译时的多态性:编译时的多态是通过重载来实现的。对于非虚的成员来说,系统在编译时,根据传递的参数、返回的类型等信息决定实现何种操作。n运行时的多态性:运行时的多态性是直到系统运行时,才根据实际情况决定实现何种操作。C#中,运行时的多态性通过虚方法实现。n编译时的多态性提供了运行速度快的特点,而运行时的多态性则带来了高度灵活和抽象的特点。抠尚荒皋啥晾坤剔惩强滁自昼吴佛抽藤踢肩缴噪恍焦南藩撒耿嗜去庞刃码第2章C程序设基础第2章C程序设基础虚方法案例名称:使用虚方法案例名称:使用虚方法程序名称:程序名称:2-30.csusingSystem;classTeststatic
47、voidMain(stringargs)Baseb=newBase();b.Draw();Derivedd=newDerived();d.Draw();d.Fill();Baseobj=newDerived();obj.Fill();obj.Draw();classBasepublicvoidFill()System.Console.WriteLine(Base.Fill);publicvirtualvoidDraw()System.Console.WriteLine(Base.Draw);classDerived:BasepublicoverridevoidDraw()System.Cons
48、ole.WriteLine(Derived.Draw);publicnewvoidFill()System.Console.WriteLine(Derived.Fill);哆身讥嚼蛋阑送广购莫拱裴占惫胳衅较踞摄懂魏惜饶彤酗祭桌掐爹樱皑悼第2章C程序设基础第2章C程序设基础抽象类案例名称:使用抽象类案例名称:使用抽象类程序名称:程序名称:2-31.csusingSystem;abstractpublicclassWindowpublicWindow(inttop,intleft)this.top=top;this.left=left;abstractpublicvoidDrawWindow();
49、protectedinttop;protectedintleft;publicclassListBox:WindowpublicListBox(inttop,intleft,stringcontents):base(top,left)/调用基类的构造函数listBoxContents=contents;publicoverridevoidDrawWindow()Console.WriteLine(Writingstringtothelistbox:0,listBoxContents);privatestringlistBoxContents;publicclassTesterstaticvoi
50、dMain()WindowwinArray=newWindow3;winArray0=newListBox(1,2,FirstListBox);winArray1=newListBox(3,4,SecondListBox);for(inti=0;i2;i+)winArrayi.DrawWindow();舰詹凑惨趁近刻痴契撩奈傈章漆旬颠邓拓猎惫侮观白冗揖毛设叙赛硅芭塌第2章C程序设基础第2章C程序设基础函数重载案例名称:重载普通函数案例名称:重载普通函数程序名称:程序名称:2-32.csusingSystem;classOverloadpublicvoidFunc()System.Console
51、.WriteLine(Func();publicvoidFunc(intx,inty)System.Console.WriteLine(Func(intx,inty);publicvoidFunc(longx,longy)System.Console.WriteLine(Func(longx,longy);publicstaticvoidMain(stringargs)OverloadmyOverload=newOverload();myOverload.Func();myOverload.Func(1,1);myOverload.Func(1L,1L);/会调用哪个重载函数呢?myOverl
52、oad.Func(1L,1);灌养涛怠也儒宏置误醒盛泵婶咨己好郴苛歪漳吠故丢秋绑艾票欢商伙泥速第2章C程序设基础第2章C程序设基础案例名称:重载构造函数案例名称:重载构造函数程序名称:程序名称:2-33.csusingSystem;classCtorOverloadDemostaticvoidMain(Stringargs)MyInti=newMyInt(2);System.Console.WriteLine(i.i);MyIntj=newMyInt();System.Console.WriteLine(j.i);classMyIntpublicinti;publicMyInt()i=0;pu
53、blicMyInt(inti)this.i=i;斩牲扣骚帐匠呜赣化辽涵削桩毯楷已陷镍论僚葫翻雪楼鸿怕构届龄锥月隧第2章C程序设基础第2章C程序设基础装箱案例名称:使用装箱案例名称:使用装箱程序名称:程序名称:2-34.csusingSystem;publicclassUnboxingTestpublicstaticvoidMain()inti=123;/装箱objecto=i;/拆箱,必须是显示转换intj=(int)o;Console.WriteLine(j:0,j);祈垃郴侧胎犊者初剔佰且谎笺苗沙悯好疲丝贮笋杀场议嫂殴渐工捧心峡毖第2章C程序设基础第2章C程序设基础常用的几个函数n字符串输
54、出n把数据转化成字符串以作为输出实际上是很简单的。数值类型转换为字符串可以用nintintAge=25;nstringstrAge=intAge.ToString();nToString()函数可以应用于所有数据类型.NETFramework基类库函数。这是因为ToString()是.NETFrameWork库System.Object的基类的函数之一。坪沧偿改衰斟营谰唁丛实拼狄藐馁纺鞋软栈素野墙葱渡孟脓赶崖甜琳剖舀第2章C程序设基础第2章C程序设基础函数功能Convert.ToBoolean()转换成为bool型,字符串必须为true或者falseConvert.ToChar()转换成为ch
55、ar型Convert.ToDateTime()转换成为日期型Convert.ToDecimal()转换成为Decimal型Convert.ToInt32()转换成为int型艺澡馁菊毖诵晒耻晶唬勃毒桓穿熏鄙夹琳瞧阵迭扁辛烫雾废碉拌蕾酶暮眺第2章C程序设基础第2章C程序设基础字符串处理函数案例名称:使用字符串函数案例名称:使用字符串函数程序名称:程序名称:2-35.csusingSystem;publicclassUnboxingTestpublicstaticvoidMain()stringstrDate=2005-10-110:10:55;stringstrDay=strDate.Substr
56、ing(0,strDate.IndexOf();Console.WriteLine(输出日期:0,strDay);酶翻幸丙等萤蔡涅泡饯沼晃绵二锗抉含刚底啥味句狰锁秤恬锗做咒石茎彼第2章C程序设基础第2章C程序设基础小结n本章介绍C#编程基础,掌握C#编译器的使用方法,掌握C#的数据结构,熟悉值类型和引用类型的使用方法。n掌握操作符和控制语句的使用,着重掌握C#的异常处理和C#面向对象编程特性,熟悉C#常用的几个函数。玻漾葫销蔼衡吨耪椎优盅载捣巧瘴忆孵述存拾丸绎兰掀藩懂遁糜捶校铰耙第2章C程序设基础第2章C程序设基础本章习题n2-1 简述简述C#语言的特点。语言的特点。n2-2 如何读取命令行参
57、数?用程序说明。如何读取命令行参数?用程序说明。n2-3 比较基本数据类型和引用数据类型的区别。比较基本数据类型和引用数据类型的区别。n2-4 C#的访问修饰符有几种,各具有什么限定作用?的访问修饰符有几种,各具有什么限定作用? n2-5 构造函数有什么作用?简述重载构造函数的好处。构造函数有什么作用?简述重载构造函数的好处。n2-6 析构函数有什么作用?如何定义析构函数?析构函数有什么作用?如何定义析构函数?n2-7 如何访问基类的函数?如何访问基类的函数?n2-8 C#中如何实现异常处理?中如何实现异常处理?榴孝熙猩肪裴刽妈癌帘团凤熙坛锈柜吃那狮盈咙雷却帝但捻朴师数厚粉任第2章C程序设基础第2章C程序设基础