《accp5.0使用C#开发数据库应用程序(C#WinForms)第3章.ppt》由会员分享,可在线阅读,更多相关《accp5.0使用C#开发数据库应用程序(C#WinForms)第3章.ppt(33页珍藏版)》请在三一办公上搜索。
1、第三章,用 Hello ACCP.NET 快速热身(三),回顾,static void Main(string args)int i,j;i=1;while(i=5)for(j=1;j=5;j+)Console.Write(*);Console.WriteLine();i+;Console.ReadLine();,下面一段代码的输出是什么?,预习检查,本章介绍了哪些传递参数的方式?说出两个常用的字符串处理方法。C#中的类型转换有哪几种方式?,本章任务,编写 Hello ACCP.NET 控制台应用程序计算缴税后的工资交换两个数处理用户邮件地址 字符串分割后重新连接输出个人档案一个数转换为其他类
2、型,本章目标,掌握 C#中方法的定义和使用掌握 C#中参数的传递方式掌握常用的 String 类的方法能够进行常用数据类型之间的转换,C#中的命名空间,using System;using;using System.Text;namespace HelloACCP class Program static void Main(string args)/,系统定义的命名空间,自定义的命名空间,命名空间:一种组织代码的方法 代码及内容唯一标识,引用命名空间,using System;/引用 System 命名空间namespace HelloACCP class Program static vo
3、id Main(string args)Console.WriteLine(Hello ACCP.NET);,/不引用 System 命名空间/using System;namespace HelloACCP class Program static void Main(string args)/Console.WriteLine(Hello ACCP.NET);System.Console.WriteLine(Hello ACCP.NET);,如果不使用using,要使用完全限定名称,WriteLine()方法的完全限定名称,使用 using 引用命名空间,示例1源代码,方法的基本概念,回顾
4、:什么是方法?使用方法有什么好处?,类的行为,便于修改、增加可读性、可重用、封装,C#中方法的定义形式:,访问修饰符 返回类型 方法名(参数列表)/方法的主体,publicprivate,intdoublestringvoid,命名规范:单词首字母大写Pascal命名法,参数传递与Java有所不同,参数的值传递方式,工资计税的方法为:低于等于1600不计税,超出1600的部分按10%缴税,int pay;/税前工资 float taxRate=0.1f;/税率float afterTax;/税后工资Console.WriteLine(请输入税前工资:);pay=int.Parse(Consol
5、e.ReadLine();if(pay=1600)/低于1600不缴税 afterTax=pay;else/高于1600 部分按税率缴税 afterTax=pay-(pay-1600)*taxRate;Console.WriteLine(税前工资0,税后工资1,pay,afterTax);,怎样用方法实现?,演示示例2:自定义方法计算税后工资,示例2代码分析,关键代码回顾:,示例2源代码,/此方法根据税前工资计算税后工资private static float GetPay(int pay,float taxRate)float afterTax;if(pay=1600)/低于1600不缴税
6、afterTax=pay;else/高于1600 部分按税率缴税 afterTax=pay-(pay-1600)*taxRate;return afterTax;,传入税前工资、税率,返回税后工资,为什么使用 ref,下面代码输出结果是什么?,static void Main(string args)int num1=5,num2=10;/两个数字 Console.WriteLine(交换前两个数的值分别为:0和1,num1,num2);Swap(num1,num2);/交换两个数的值 Console.WriteLine(交换后两个数的值分别为:0和1,num1,num2);/交换两个数的方法
7、private static void Swap(int num1,int num2)int temp;/中间变量 temp=num1;num1=num2;num2=temp;,值传递不能保留参数的修改要按引用传递,使用 ref,通过引用传递参数,ref 修饰参数:调用方法后,参数值的更改仍然保留,演示示例3:使用 ref 交换两个数,示例 3 分析,static void Main(string args)Console.WriteLine(交换前两个数的值分别为:0和1,num1,num2);/交换两个数的值 Swap(ref num1,ref num2);Console.WriteLin
8、e(交换后两个数的值分别为:0和1,num1,num2);,/交换两个数的方法private static void Swap(ref int num1,ref int num2)int temp;/中间变量 temp=num1;num1=num2;num2=temp;,调用时也要使用 ref,两种传参方式的比较,调用方法,方法定义,ModifyValue(num1,ref num2);,ModifyValue(int param1,ref int param2);,调用前,num1=3,num2=5,param1=3,param2=5,方法中修改:,调用后,param1=4,param2=6
9、,num1=3,num2=6,调用,值传递,引用传递,IDE 使用技巧进阶,在示例3上演示:,使用 VS 的重构功能,重新提取方法,小结,比较两个数的大小,自定义比较两个整数大小的方法:如果第一个数大,返回1如果相等返回0如果第一个数小,返回-1在 Main()方法中输入两个数,调用这个方法,参考答案,/比较两个数大小的方法private static int Compare(int num1,int num2)if(num1 num2)return 1;else if(num1=num2)return 0;else return-1;,String常用方法,回顾:Java 中常用的字符串处理
10、方法?,C#中常用的字符串处理方法:Equals():比较两个字符串的值是否相等Join():连接字符串Split():分割字符串IndexOf():查找某个字符在字符串中的位置SubString():从字符串中截取子字符串ToLower():将字符串转换成小写形式Trim():去掉字符串两边的空格,String 常用方法应用1,已有如下代码,按要求增加功能:,static void Main(string args)string email;/电子邮件地址 Console.WriteLine(请输入你的邮箱:);email=Console.ReadLine();Console.WriteLi
11、ne(你的邮箱是 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(_,splitStr
12、ings);,返回值为字符串数组,字符串变量名,参数:分隔符(char型),返回字符串,静态方法,参数1:连接符参数2:字符串数组,关键代码回顾:,示例5源代码,Join()方法连接字符串,Format()方法,回顾两种输出字符串的方式:,string name=王强;Console.WriteLine(我的名字是+name+,我的年龄是+18);,string name=王强;Console.WriteLine(我的名字是 0,我的年龄是1,name,18);,格式字符串,String 类的 Format()方法用来格式化字符串,变量列表,演示示例6:输出个人档案,示例 6 代码分析,关键代
13、码回顾:,示例6源代码,record=string.Format(姓名:0n出生年月:1n身高:2n 血型:3n星座:4n最喜欢的食物:5,name,birthday,height,bloodType,planet,favourFood);Console.WriteLine(n这是你的个人档案:);Console.WriteLine(record);,参数与 WritLine()方法相似,Format()的语法小结,string myString=string.Format(格式字符串,参数列表);,string myString=string.Format(0 乘以 1 等于 2,2,3,2
14、*3);,格式字符串,代表,参数列表,2乘以3等于6,包括占位符x,小结,补充下划线处的占位符,输出五个成语,string yi=一;string er=二;string san=三;string word=string.Format(独 _ 无 _,_ 心 _ 意,垂涎 _ 尺,略知 _ _,举_ 反 _,yi,er,san);Console.WriteLine(word);,趣味编程:看谁写的巧!,参考答案,string yi=一;string er=二;string san=三;string word=string.Format(独0无1,2心1意,垂涎2尺,略知01,举0反2,yi,e
15、r,san);Console.WriteLine(word);,为什么需要类型转换,编译器要确切地知道数据的类型,int num=123;,整数,字符串,需要类型转换!,编译出错,怎样进行隐式类型转换,隐式转换:自动类型转换,float,int,规则:对于数值类型,A的取值范围完全包含在B内,A,B,static void Main(string args)double score=58.5;/原始成绩 int bonus=2;/加分 int sum;/总分 sum=score+bonus;/计算总分 Console.WriteLine(sum);Console.ReadLine();,怎样进
16、行显式类型转换,static void Main(string args)double score=58.5;int bonus=2;int sum;sum=(int)score+bonus;Console.WriteLine(sum);Console.ReadLine();,明确告诉编译器转换类型注意:double(58.5)-int(58),精度可能丢失!,显式转换:强制类型转换,使用 Parse()进行转换,字符串和数值型的互相转换,int,float,double,string,int.Parse(),float.Parse(),double.Parse(),ToString(),必须
17、是数字的有效表示形式!,使用 Convert 类进行转换,使用 Convert:Convert.ToXxx(object value),Convert.ToInt32(),Convert.ToSingle(),Convert.ToString(),double85.63,string85.63,int86,float85.63,演示示例7:不同类型的相互转换,Parse 与 Convert,Xxx.Parse(string),目标类型的有效表示形式,Convert.ToXxx(object):,注:Xxx表示某种类型,字符串,其他类型,任意类型,其他类型,小结,类型转换有几种方式?,strin
18、g myString=Hello;int myInt=int.Parse(myString);,double score=59.3;int myInt=Convert.ToInt32(score);,double score=92.6;string myString=score.ToString();,错误!字符串不是有效的整数形式,转换成功!myString 为 92.6,转换成功,但精度丢失!myInt 为 59,下面各种转换的结果是什么?,总结,自定义方法由哪几部分构成?String 类的 Format()方法的参数包括什么?Parse()与 Convert 分别把什么类型转为什么类型?,Thank you,