您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第5章C程序设计基础(四)
云南颠峰软件培训学院课程名称:使用C#开发.NET应用程序(第五章、C#程序设计基础(四))授课讲师:黎吾鑫回顾staticvoidMain(string[]args){inti,j;i=1;while(i=5){for(j=1;j=5;j++){Console.Write(*);}Console.WriteLine();i++;}Console.ReadLine();}下面一段代码的输出是什么?预习检查本章介绍了哪些传递参数的方式?说出两个常用的字符串处理方法。C#中的类型转换有哪几种方式?本章任务编写HelloDFZC.NET控制台应用程序计算缴税后的工资交换两个数处理用户邮件地址字符串分割后重新连接输出个人档案一个数转换为其他类型本章目标掌握C#中方法的定义和使用掌握C#中参数的传递方式掌握常用的String类的方法能够进行常用数据类型之间的转换C#中的命名空间usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceHelloACCP{classProgram{staticvoidMain(string[]args){//…}}}系统定义的命名空间自定义的命名空间命名空间:一种组织代码的方法代码及内容唯一标识引用命名空间usingSystem;//引用System命名空间namespaceHelloACCP{classProgram{staticvoidMain(string[]args){Console.WriteLine(HelloACCP.NET);}}}//不引用System命名空间//usingSystem;namespaceHelloACCP{classProgram{staticvoidMain(string[]args){//Console.WriteLine(HelloACCP.NET);System.Console.WriteLine(HelloACCP.NET);}}}如果不使用using,要使用完全限定名称WriteLine()方法的完全限定名称使用using引用命名空间示例1源代码方法的基本概念回顾:什么是方法?使用方法有什么好处?类的行为,便于修改、增加可读性、可重用、封装…C#中方法的定义形式:访问修饰符返回类型方法名(参数列表){//方法的主体…}publicprivateintdoublestringvoid…命名规范:单词首字母大写——Pascal命名法参数传递与Java有所不同参数的值传递方式工资计税的方法为:低于等于1600不计税,超出1600的部分按10%缴税intpay;//税前工资floattaxRate=0.1f;//税率floatafterTax;//税后工资Console.WriteLine(请输入税前工资:);pay=int.Parse(Console.ReadLine());if(pay=1600)//低于1600不缴税{afterTax=pay;}else//高于1600部分按税率缴税{afterTax=pay-(pay-1600)*taxRate;}Console.WriteLine(税前工资{0},税后工资{1},pay,afterTax);怎样用方法实现?演示示例2:自定义方法计算税后工资示例2代码分析关键代码回顾:示例2源代码//此方法根据税前工资计算税后工资privatestaticfloatGetPay(intpay,floattaxRate){floatafterTax;if(pay=1600)//低于1600不缴税{afterTax=pay;}else//高于1600部分按税率缴税{afterTax=pay-(pay-1600)*taxRate;}returnafterTax;}传入税前工资、税率返回税后工资为什么使用ref下面代码输出结果是什么?staticvoidMain(string[]args){intnum1=5,num2=10;//两个数字Console.WriteLine(交换前两个数的值分别为:{0}和{1},num1,num2);Swap(num1,num2);//交换两个数的值Console.WriteLine(交换后两个数的值分别为:{0}和{1},num1,num2);}//交换两个数的方法privatestaticvoidSwap(intnum1,intnum2){inttemp;//中间变量temp=num1;num1=num2;num2=temp;}值传递不能保留参数的修改要按引用传递,使用ref通过引用传递参数ref修饰参数:调用方法后,参数值的更改仍然保留定义和调用在参数前使用ref在调用方法前作为参数的变量声明并赋值何时使用希望保留参数的更改演示示例3:使用ref交换两个数示例3分析staticvoidMain(string[]args){Console.WriteLine(交换前两个数的值分别为:{0}和{1},num1,num2);//交换两个数的值Swap(refnum1,refnum2);Console.WriteLine(交换后两个数的值分别为:{0}和{1},num1,num2);}//交换两个数的方法privatestaticvoidSwap(refintnum1,refintnum2){inttemp;//中间变量temp=num1;num1=num2;num2=temp;}调用时也要使用ref两种传参方式的比较调用方法方法定义ModifyValue(num1,refnum2);ModifyValue(intparam1,refintparam2){};调用前num1=3num2=5param1=3param2=5方法中修改:调用后param1=4param2=6num1=3num2=6调用值传递引用传递IDE使用技巧进阶在示例3上演示:使用VS的重构功能,重新提取方法小结比较两个数的大小,自定义比较两个整数大小的方法:如果第一个数大,返回1如果相等返回0如果第一个数小,返回-1在Main()方法中输入两个数,调用这个方法参考答案//比较两个数大小的方法privatestaticintCompare(intnum1,intnum2){if(num1num2){return1;}elseif(num1==num2){return0;}else{return-1;}}String常用方法回顾:Java中常用的字符串处理方法?C#中常用的字符串处理方法:Equals():比较两个字符串的值是否相等Join():连接字符串Split():分割字符串IndexOf():查找某个字符在字符串中的位置SubString():从字符串中截取子字符串ToLower():将字符串转换成小写形式Trim():去掉字符串两边的空格……String常用方法应用1已有如下代码,按要求增加功能:staticvoidMain(string[]args){stringemail;//电子邮件地址Console.WriteLine(请输入你的邮箱:);email=Console.ReadLine();Console.WriteLine(你的邮箱是{0},email);}需实现的功能:1、输入yes时,程序循环执行2、兼容以下各种形式yes(YES、yes、YeS…..)3、提取邮箱的用户名演示示例4:String常用方法String常用方法应用2输入一个字符串,输出每个单词,重新用下划线连接输出使用Split()方法分割字符串使用Join()方法连接字符串演示示例5:字符串的分割和连接Split()方法——分割字符串示例5代码分析splitStrings=inputString.Split('');//将分割后的字符串使用下划线连接在一起joinString=string.Join(_,splitStrings);返回值为字符串数组字符串变量名参数:分隔符(char型)返回字符串静态方法参数1:连接符参数2:字符串数组关键代码回顾:示例5源代码Join()方法——连接字符串Format()方法回顾两种输出字符串的方式:stringname=王强;Console.WriteLine(我的名字是+name+,我的年龄是+18);stringname=王强;Console.WriteLine(我的名字是{0},我的年龄是{1},name,18);格式字符串String类的Format()方法用来格式化字符串变量列表演示示例6:输出个人档案示例6代码分析关键代码回顾:示例6源代码record=string.Format(姓名:{0}\n出生年月:{1}\n身高:{2}\n血型:{3}\n星座:{4}\n最喜欢的食物:{5},name,birthday,height,bloodType,planet,favourFood);Console.WriteLine(\n这是你的个人档案:);Console.WriteLine(record);参数与WritLine()方法相似Format()的语法小结stringmyString=string.Format(格式字符串,参数列表);stringmyString=string.Format({0}乘以{1}等于{2},2,3,2*3);格式字符串代表参数列表2乘以3等于6包括占位符{x}小结补充下划线处的占位符,输出五个成语stringyi=一;stringer=二;stringsan=三;stringword=string.Format(独_无_,_心_意,垂涎_尺,略知__,举_反_,yi,er,san);Console.WriteLine(word);趣味编程:看谁写的巧!参考答案stringyi=一;stringer=二;stringsan=三;stringword=string.Format(独{0}无{1},{2}心{1}意,垂涎{2}尺,略知{0}{1},举{0}反{2},yi,er,san);Console.WriteLine(word);为什么需要类型转换编译器要确切地知道数据的类型intnum=123;整数字符串需要类型转换!编译出错怎样进行隐式类型转换隐式转换:自动类型转换floatint规则:对于数值类型,A的取值范围完全包含在B内ABstaticvoidMain(string[]args){doublescore=58.5;//原始成绩intbonus=2;//加分intsum;//总分sum=score+bonus;//计算总分Console.WriteLine(sum);Console.ReadLine();}怎样进行显式类型转换staticvoidMain(string[]args){doublescore=58.5;intbonus=2;intsum;sum=(int)score+bonus;Console.WriteLine(sum);Console.ReadLine();}×明确告诉编译器转换类型注意:double(58.5)-int(58),精度可能丢失!显式转换:强制类型转换使用Parse()进行转换字符串和数值型的互相转换intfloatdoublestringfloat.Parse()ToString()必须是数字的有效表示形式!使用Convert类进行转换使用Convert:Convert.ToXxx(objectvalue)Convert.ToInt32()Convert.ToSingle()Convert.ToString()double85.63string85.63int86float85.63演示示例7:不同类型的相互转换Parse与ConvertXxx.Parse(string)目标类型的有效表示形式Convert.ToXxx(object):注:Xxx表示某种类型字符串其他类型任意类型其他类型小结类型转换有几种方式?string
本文标题:第5章C程序设计基础(四)
链接地址:https://www.777doc.com/doc-2110258 .html