C基础全部课件

上传人:枫** 文档编号:568763006 上传时间:2024-07-26 格式:PPT 页数:170 大小:1.33MB
返回 下载 相关 举报
C基础全部课件_第1页
第1页 / 共170页
C基础全部课件_第2页
第2页 / 共170页
C基础全部课件_第3页
第3页 / 共170页
C基础全部课件_第4页
第4页 / 共170页
C基础全部课件_第5页
第5页 / 共170页
点击查看更多>>
资源描述

《C基础全部课件》由会员分享,可在线阅读,更多相关《C基础全部课件(170页珍藏版)》请在金锄头文库上搜索。

1、1C#基础全部C C# #编程基础编程基础讲师:老赵讲师:老赵QQ:285014478Tel:2C#基础全部基础班的要求上课的坐姿上课的提问打字上课的电话和快递快递留刘丽老师的电话笔记根据我的笔记画一张图片课堂随手记默认作业(将当天上课我写的代码写三遍)3C#基础全部概念:.net与c#.net/dotnet:一般指.NetFramework框架.一种平台,一种技术.C#(sharp):一种编程语言,可以开发基于.net平台的应用.(*)Java即是一种平台又是一种编程语言4C#基础全部.net都能干什么(S)桌面应用程序 Winform(.net开发的桌面应用程序叫Winform应用程序)I

2、nternet应用程序ASP.NET(.net开发的internet应用程序叫ASP.NET应用程序)手机开发wp8(.net可以做手机开发,Wp8,目前在中国刚刚起步,也许这是一个机会)Wp8已经来袭,要善于抓住机会,敢于尝试.-掌握分寸Unity3D游戏开发或者虚拟现实(大家的机遇)5C#基础全部.NET两种交互模式(s)C/S:客户机(Client)/服务器模式(Server)如:qq(C/S是Client/Server的缩写。客户端需要安装专用的客户端软件。)B/S:浏览器(Browser)/服务器模式(Server)(B/是Brower/Server的缩写,客户机上只要安装一个浏览器

3、)关于B/S和C/S的区别在下面备注中有6C#基础全部IDE介绍(S)IDE(IntegratedDevelopment,集成开发环境)VisualStudio2010简介:一套完整的开发工具集用于开发桌面应用程序、ASP.NETWeb应用程序、XML、WebService、移动应用程序为快速开发提供强大支持(.net的IDE就是vs2010、vs2012、vs2013)7C#基础全部IDE及.Net的版本(*了解).Net1.1.Net2.0.Net3.x.Net4.xVisualStudio2003VisualStudio2005VisualStudio2008VisualStudio20

4、10向下兼容.Net1.0VisualStudio2002举例:word的版本问题8C#基础全部MSDN介绍(我们的百科全书,帮助)神器MSDN的全称是MicrosoftDeveloperNetwork。这是微软公司面向软件开发者的一种信息服务。MSDN实际上是一个以VisualStudio和Windows平台为核心整合的开发虚拟社区,包括技术文档、在线电子教程、网络虚拟实验室、微软产品下载(几乎全部的操作系统、服务器程序、应用程序和开发程序的正式版和测试版,还包括各种驱动程序开发包和软件开发包)、Blog、BBS、MSDNWebCast、与CMP合作的MSDN杂志等等一系列服务。点击查看ms

5、dn百科这里要介绍一下,vs的帮助在安装包中的ProductDocumentation这个文件夹下,安装好vs10后点击vst的管理文档,点击本地安装找到那个文件夹下的HelpContentSetup.msha这个文件安装即可9C#基础全部VisualStudio介绍1安装setup.exeinstall.exeautorun启动创建解决方案/项目认识vs的各部分(菜单/快捷键/工具栏/窗口)看下一张ppt的图片认识vs的各个部分10C#基础全部其他部分是什么意思11C#基础全部代码中各个部分的意义引用命名空间:项目名或命名空间名:Program类:Main函数:12C#基础全部深入了解VS.

6、Sln:解决方案文件.csproj:项目文件.cs:类文件解决方案文件和项目文件以及类文件之间的关系?13C#基础全部先学习两行最基本的代码先学习两句话:(演示)Console.WriteLine(Hello,World!);Console.ReadKey();OK,代码写完了,怎么样运行这个由两行代码编写的程序呢?14C#基础全部运行代码和编译代码(生成解决方案)运行代码我们有两种方式1、F52、点击但是我们在运行之前习惯性的点击快捷键F6,那么F6可以给我带来什么效果呢?15C#基础全部VS中的各种设置设置行号工具-选项-文本编辑器-C#-行号设置字体创建多个项目启动项目设置项目的加载与卸

7、载16C#基础全部VS中的常用快捷键Ctrl+K+D:快速对齐代码Ctrl+Z:撤销Ctrl+S:保存(一定要经常保存!)Ctrl+J:快速弹出智能提示Shift+End、Shift+HomeCtrl+K+C:注释所选代码Ctrl+K+U:取消对所选代码的注释F1:转到帮助文档折叠冗余代码:#Region和#EndRegion17C#基础全部Exercise:请实现如上效果18C#基础全部编写代码中需要注意的问题写代码切忌括号错误!代码中所有的标点都是英文半角的标点。c#代码中每行代码以分号结束19C#基础全部程序猿的专业和职业道德不写注释是流氓不写注释是流氓名字瞎起是扯淡名字瞎起是扯淡20C

8、#基础全部c#中的注释符(S)三种注释方式第一种:单行注释以/开头,后面的就是注释内容/单行注释第二种:多行注释以/*开头*/结束之间的是注释内容/*/多行注释第三种:文档注释在方法或类的上一行输入/就会产生/文档注释/我们要专业,我们要有职业道德。21C#基础全部变量1我们在计算机中存储数据和客人住旅馆很类似.我们住旅馆一般要做以下事情我们住旅馆一般要做以下事情:1、开房间(单人间、双人间、总统套间、开房间(单人间、双人间、总统套间)2、入住、入住22C#基础全部变量2要在计算机中存一个数字50,需要两句话.inta;/开一个能放数字的空间a=50;/把50放进去.声明变量的语法格式:数据类

9、型变量名;赋值:变量名=值;可以a=3.14;吗?23C#基础全部变量3计算机中各式各样的数据33.14100the quick brown fox jumps over the lazy dog 张三张三 李四李四 True 2011-3-6char非数值非数值数值数值整型整型decimaldouble非整型非整型String 数据类型数据类型 int还有很多的数据类型(自己查)24C#基础全部C#中常用的数据(S)int:(整数)1,250,520double:(小数)3.1415926,1.4142135623731char:(字符)Aba钱string:(字符串)“老赵”,“Hello

10、World”adecimal:(金钱小数)存储金钱5.62mdecimald=5.55m;decimald1=5;(错误)double和decimal都是小数但是精度不同(看神器)float;-自己查资料25C#基础全部变量的声明方法(S)A)数据类型变量名称;intage;变量的赋值age=18;B)定义时赋值,数据类型变量名称=值;intage=18;C)如果一次要声明多个相同类型的变量可用逗号分隔.stringzsName,lsName;变量一定要先声明,再赋值,才能使用.练习:定义一个int类型变量存95,显示出来想一想下面代码的输出结果是?doublenum=36.6;Console

11、.WriteLine(“num”);26C#基础全部变量的命名(S)命名规则:命名规则:1 必须以必须以“字母字母”_或或符号开头符号开头.-不要以数字开头不要以数字开头2 后面可以跟任意后面可以跟任意“字母字母”、数字、下划线、数字、下划线.注意注意:1)你起的变量名不要与)你起的变量名不要与c#系统中的关键字重复系统中的关键字重复.2)在)在c#中中,大小写是敏感的大小写是敏感的.3)同一个变量名不允许重复定义同一个变量名不允许重复定义(先这么认为先这么认为,不严谨不严谨)定义变量时,变量名要有意义定义变量时,变量名要有意义C# C# 变量命名编码规范变量命名编码规范Camel Camel

12、 命名法:命名法:首个单词的首字母小写,其余单词的首字母大写。首个单词的首字母小写,其余单词的首字母大写。PascalPascal命名命名规范命名命名规范: :每一个单词第一字母都大写每一个单词第一字母都大写如果使用到英文单词的缩写,全部用大写!如果使用到英文单词的缩写,全部用大写!27C#基础全部变量的命名规则28C#基础全部下面的变量名称哪些正确?principalcost_pricemarks_3$lastnamecity123ratediscount%zip codeCityint29C#基础全部赋值运算符和赋值表达式(S)赋值运算符=intnum=9;num=num+1;这里的=号是

13、赋值运算 符,不是数学义意上的相等.变量可以重复赋值,一旦给一个变量赋了新值,那么变量中的老值就不复存在了.右边代码的输出结果:intnum=10;num=20;Console.WriteLine(”num“);30C#基础全部演示:定义一个变量存储客户的姓名,然后在屏幕上显示:”你好,某某”.某某代表变量中客户的姓名+号可以连接两个字符串,这里的“+”号表示连接的意思关于占位符0,挖坑填坑,(演示后做练习)31C#基础全部练习:有个叫卡卡西的人在旅店登记的时候前台让他填一张表,这张表的里的内容要存到电脑上,有姓名、年龄、邮箱、家庭住址,工资.之后把这些信息显示出来我叫卡卡西,我住在火影村,我

14、的工资2000.2.定义一个变量存储一个人的年龄(18),然后发现这个人的年龄不是18岁,要把这个人的年龄修改成81岁(本题体会变量可以被重复多次赋值),最后把这个人的年龄输出到屏幕上?32C#基础全部变量练习3.定义四个变量,分别存储一个人的姓名、性别(Gender)、年龄、电话(TelephoneNumber)。然后打印在屏幕上(我叫X,我今年X岁了,我是X生,我的电话是XX)(电话号用什么类型,如:010-12345)4.在屏幕上显示我家在今年.岁了,我的姓名是.请定义变量存储上面的值,并显示在屏幕上.5.定义两个变量如:number1,number2分别赋值为10和5,写程序交换两个变

15、量的值(两种方法都掌握)33C#基础全部字符串类型再学习一句话:Console.ReadLine();用于接收用户的输入.要定义一个字符串变量来接收变存储用户输入的值.Console.WriteLine();Console.ReadKey();1.练习:问用户喜欢吃什么水果(fruits),假如用户输入”苹果”,则显示”哈哈,这么巧,我也喜欢吃苹果”2.练习:请用户输入姓名性别年龄,当用户按下某个键子后在屏幕上显示:您好:XX您的年龄是XX是个X生34C#基础全部字符串中的转义能在字符串中输出双引号吗?在屏幕上显示:c#中的字符串用”号包含起来+一个字符,组成转译字符.一般用于表示特殊符号字在

16、字符串前面表示不转译常用的转译符:nbt”练习:自己查“神器”看看还有什么转义符35C#基础全部算术运算符及算术表达式算术运算符:+-*/%(取余数取模)算术表达式:由算术运算符连接起来的式子.如:1+1a-b(变量ab前面已声明并赋初值)演示:某学生三门课成绩为,语文:90数学:80英语:67,编程求总分和平均分.优先级:先乘除先乘除,后加减后加减,有括号先算括号里的有括号先算括号里的,相相同级别的从左至右运算同级别的从左至右运算 int a=(1+5)+3)*2小括号可以无限制的套用,但一定要成对出现.36C#基础全部练习练习1:定义两个数分别为100和20,打印出两个数的和。练习2:计算

17、半径为5的圆的面积和周长并打印出来.(pi为3.14)面积:pi*r*r;Perimeter(周长)练习3:某商店T恤(T-shirt)的价格为35元/件,裤子(trousers)的价格为120元/条.小明在该店买了3件T恤和2条裤子,请计算并显示小明应该付多少钱?打8.8折后呢?37C#基础全部算术运算符-自动类型转换下面代码的输出结果是什么?inta=10,b=3;intm=a%b;doubleq=a/b;Console.WriteLine(m);Console.WriteLine(q);凭借自己的能力大家观察一下.要有一双善于发现的眼睛,凭借自己的猜想和动手.这样的记忆才是最深刻的。忠告

18、:多练才是王道清明时节雨纷纷,狠敲代码有大奔中秋佳节倍思亲,狂敲代码拿年薪38C#基础全部类型自动转换规则(S)参与运算(算术运算和赋值运算)的操作数和结果类型必须一致.当不一致时,满足下面条件时,系统自动完成类型转换(隐式转换)两种类型兼容例如:int和double兼容(都是数字类型)目标类型大于源类型例如:doubleint对于表达式如果一个操作数为double型,则整个表达式可提升为double型比如前面打8.8折的练习题.求10/3商(Remainder)要想得到3.333的处理.39C#基础全部强制类型转换如上题中打完8.8折后出现小数,商店为了结算方便,只收用户整数部分的钱,如本应

19、收用户303.6,现在只收用户303元,应该如何做?语法:(数据类型名)待转换的值;如:int b = (int)3.14; 强制类型转换强制类型转换,数据类型一定要相兼容数据类型一定要相兼容 下面的写法对吗?下面的写法对吗? int number = (int)”3.14”;-男人变女人男人变女人,狗只能是狗狗只能是狗谨记谨记:int 转转double 隐式转换隐式转换,多小数多小数, double转转int显示转换显示转换,丢精度丢精度.在屏幕输出在屏幕输出“中国中国,你好你好”,但是代码中不能出现中国但是代码中不能出现中国40C#基础全部类型转型问题:让用户输入他的语文和数学成绩,计算他

20、的总成绩并显示出来?Convert不再仅是内存级别的转换,而是考虑数据意义的转换。Convert是一个加工、改造的过程通过Convert.ToInt32(能转换成int类型的数据)来把其他类型数据转换成int类型一切类型都可以转换为string类型练习:让用户输入姓名语文数学英语三门课的成绩,然后给用户显示:XX,你的总成绩为XX分,平均成绩为XX分。41C#基础全部练习练习,编程实现计算几天(如46天)是几周零几天.练习:编程实现107653秒是几天几小时几分钟几秒?修改上面的题目,让用户输入.小时(Hour),分钟(Minute),秒(Seconds)42C#基础全部算术运算符和复合赋值运

21、算符+自加一有前加和后加-自减一有前减和后减一元运算符+/-比二元的+-优先级高+=-=*=/=%=对于+-*/%=都需要两个操作数才能进行运算的这些运算符,我们叫做二元运算符;对于像+-这样的只需要一个操作数就能进行运算的运算符,我们叫做一元运算符.43C#基础全部练习:1请说出上面程序执行完成后,var1中的值?上题中如果改成:Var1=+var2*var3-;Var1=?44C#基础全部关系运算符(比较运算S),=(大于等于,包含),老鼠的重量(1)兔子的寿命(3)乌龟的寿命(1000)39=90 :A 90成绩成绩=80 :B 80成绩成绩=70 :C 70成绩成绩=60 :D 成绩成

22、绩=90 :A 90成绩成绩=80 :B 80成绩成绩=70 :C 70成绩成绩=60 :D 成绩成绩=90 :A 90成绩成绩=80 :B 80成绩成绩=70 :C 70成绩成绩=60 :D 成绩成绩60 :E输入几个人的名字,计算这几个人上辈都是干什么的?(老杨,老苏,老邹,老虎,老牛,老蒋,老王,老马)61C#基础全部循环结构(S)实际生活中的循环:打印100份试卷10000米车轮(绕操场跑5圈)李四这次考试又粗心了,爸爸让他写1000遍“下次考试一定要细心”.(复印纸加三根笔)如何编程实现上面的问题?Console.WriteLine(下次考试一定要细心);Console.WriteL

23、ine(下次考试一定要细心);Console.WriteLine(下次考试一定要细心);.62C#基础全部使用循环解决聪明的解决方法:inti=0;while(i=20i74C#基础全部Continue(S)立即结束本次循环,判断循环条件,如果成立,则进入下一次循环,否则退出循环.举例:运动员跑步喝水的例子比如:我编写代码的时候,上个厕所,回来继续写代码练习1:用whilecontinue实现计算1到100(含)之间的除了能被7整除之外所有整数的和。找出1000内所有的素数/让用户输入一个数,75C#基础全部三元表达式语法:表达式1?表达式2:表达式3举例:bool result = 5 3

24、? true : false;会用就可以了随机数产生Randomr=newRandom();Intnumber=r.Next(1,11);产生1-10的数输入名字随机显示这个人上辈是什么样的人76C#基础全部总节顺序结构:语句顺序执行分支结构:语句在满足条件下执行if,if-else,if-elseif,switch-case表1?表2:表3(三元)循环结构:语句在满足条件下循环执行多次while,do-while,forforeach跳转语句break(跳出当前循环),continue(大家观察),77C#基础全部常量枚举结构(S)确定数量、确定值的几个取值:东西南北、男女、上中下。enum

25、Gendermale,femaleenumQQStatusonline,offline,hidden枚举的用法,QQStatusstatus=QQStatus.online;和用字符串比起来,用枚举的好处就是限定了变量的取值范围,程序处理起来更方便。constconst 类型类型类型类型 常量名常量名常量名常量名 = = 常量值常量值常量值常量值 static void Main(string args) const int PI = 3.14; PI = 3.20;78C#基础全部字符串与枚举的转换public enum Gender male,famale/Console.WriteLin

26、e(你的性别你的性别:0.,Gender.male.ToString();(Gender)(Enum.Parse( typeof(Gender),“male”);(会用就行)会用就行)每一个值都对应一个数字典型的枚举类型:MessageBox.Show的参数(后面会学到)自己查看”神器”看看枚举最终是怎么回事?79C#基础全部public struct Person public string Name; public int Age; public string Hobby; public int Popularity; public void SayHi() / . 一次声明多个不同类型的

27、变量一次声明多个不同类型的变量结构的语法结构的语法结构的语法结构的语法:访问修饰符访问修饰符访问修饰符访问修饰符 structstruct 结构结构结构结构名名名名 定义结构成员定义结构成员定义结构成员定义结构成员结构体(S)为什么要使用结构,例如c#中ColorPoint都是结构80C#基础全部练习:1定义一个结构叫MyColor,有三个成员,分别定义为int类型的red,green,blue声明一个MyColor类型的变量,并对其成员赋值.使MyColor可以表示成一个红色.2定义一个结构类型Person,有三个成员,分别为姓名,性别,年龄性别用枚举类型声明两个Person类型的变量,分别

28、表示张三男18岁/小兰女16岁81C#基础全部数组(S)一次语文测试后,老师让班长统计每一个学生的成绩并计算全班(全班共60人)的平均成绩,然后把所有成绩显示出来.如果我让你输入一个就显示一个(或者输入完后再显示每个成绩),并且比较大小,平均值总成绩有何方法?如何声明变量?好的解决方法,使用数组.82C#基础全部数组保存多个值;几乎任意类型都可以声明数组;intnums=newint3;intnums=5,3,8;innums=newint31,2,3;intnums=newint2,3,5;数组的声明:以上四种intnums=newint35,3,8/个数和声明数必须一致intnums=ne

29、wint55,3,8/错误intnums=newint5,3,8/正确,可以省略数组个字使用索引器访问指定编号位置的元素,访问数组元素:nums0、nums1。索引从0开始。取到的元素的类型就是数组元素的类型。还可以对数组元素进行赋值数组的赋值与取值常见问题:求平均值,求最大值,求和,排序Array排序和反序83C#基础全部练习:练习1:从一个整数数组中取出最大的整数,最小整数,总和,平均值练习2:计算一个整数数组的所有元素的和。练习3:数组里面都是人的名字,分割成:例如:老杨|老苏|老邹”(老杨,老苏,老邹,老虎,老牛,老蒋,老王,老马)stringnames=张三,李四,王五,赵六;张三|

30、李四|王五|赵六练习4:将一个整数数组的每一个元素进行如下的处理:如果元素是正数则将这个位置的元素的值加1,如果元素是负数则将这个位置的元素的值减1,如果元素是0,则不变。练习5:将一个字符串数组的元素的顺序进行反转。“我”,“是”,”好人”“好人”,”是”,”我”。第i个和第length-i-1个进行交换。84C#基础全部try-catch的使用(简单用法)try有可能出现错误的代码;catch如果try中的代码出现异常,则进去catch中finally最后执行的代码在try块中获取并使用资源,在catch块中处理异常情况,并在finally块中释放资源。throw:85C#基础全部方法(S

31、)方法的定义:看见static就是静态方法访问修饰符static返回值类型方法名()方法体;命名规则:方法名开头大写,参数名开头小写,参数名、变量名要有意义方法的调用,对于静态方法,调用有两种方式如果在同一个类中,直接写名字调用就行了.或者类名.方法名();return可以立即退出方法.87C#基础全部常用的已经学过的方法:Console.WriteLine();Console.Write();Console.ReadLine();Console.ReadKey();int.Parse(string);Convert.ToInt32(string);对于由static修饰的方法,使用:类名.方

32、法名()调用.如果在类中调用自己的由static修饰的方法,可以省略类名.88C#基础全部变量的作用域(只讲局部变量)阅读下面的程序,说一下输出结果是多少?89C#基础全部变量的作用域在方法中定义的变量称为局部变量,其作用域从定义开始,到其所在的大括号结束为止.在一个方法中想要访问另一个方法中的变量,怎么办?两种解决方法:参数和返回值举例:写一个方法,判断一个年份是否是润年.方法中的return语句导致函数立即返回。在返回值为void的函数中return,在返回值非void的函数中return值90C#基础全部练习,自己写一个方法1读取输入的整数,定义成方法,多次调用(如果用户输入的是数字,则

33、返回,否则提示用户重新输入)2还记得学循环时做的那道题吗?只允许用户输入y或n,请改成方法3查找两个整数中的最大值:intMax(inti1,inti2)4计算输入数组的和:intSum(intvalues)91C#基础全部思考:即然Console.WriteLine()是方法,那么为什么WriteLine的参数可以是字符串类型,也可以是数字类型,还可以是布尔类型char类型呢?(重载-重写)为什么要有方法的重载?92C#基础全部思考:方法只能返回一个值,当需要返回多个值时怎么办?例如:写一个方法,计算一个int类型数组中每个元素的总和和最大值与最小值?试试能不能返回个数组呢?(自己试试)如果

34、类型不同呢?如何解决94C#基础全部方法的out参数和ref参数函数参数默认是值传递的,也就是“复制一份”,例子:intage=20;IncAge(age);Console.WriteLine(age=0,age);out则是内部为外部变量赋值,out一般用在函数需要有多个返回值的场所。例:int.TryParse。95C#基础全部方法的练习:重复让用户输入一个数,判断该数是否是质数,输入q结束?质数的判断用方法来实现boolIsPrime(intnumber)将一个字符串数组输出为|分割的形式,比如“梅西|卡卡|郑大世”(用方法来实现此功能)stringJoinString(stringna

35、mes)用方法实现找出一个int类型数组中最大值和最小值FindNumber(intnums,outintmax,outintmin)写一个方法,实现MyTryParse的功能boolMyTryParse(strings,outintresult)用户只能输入0到100之间的数写一个方法,否则提示超出范围params数组96C#基础全部面向对象概念(S)世界是由什么组成的:数学家,摄影家.画家程序员万物皆对象试着描述赵老师和学生张三的特征和行为97C#基础全部属性对象具有的各种特征每个对象的每个属性都拥有特定值例如:赵老师和张三的年龄不一样.属性:姓名,性别,年龄属性的值:方法:行为,动作.执

36、行的操作.方法:杨老师的行为,上课.学生的行为,学习听老师讲课98C#基础全部练习:说说教室里有哪些对象?这些对象有哪些属性和方法?比如:电脑/灯/音箱等等桌子,椅子一切皆对象99C#基础全部找出下列对象共性张三(一个学生)杨老师邻居售货员张阿姨李四的爸爸李四的妈妈门口停的奔驰S320汽车/老师开的QQ汽车/杨老师的解放牌大货车,牛老师开的宝马自行车类:类是模子,确定对象将会拥有的特征(属性)和行为(方法)类是模子,确定对象将会拥有的特征(属性)和行为(方法)类是对象的类型人类张三;intnumber;100C#基础全部类和对象的区别类是抽象的概念,仅仅是模板,比如说:“人”类对象是一个你能够

37、看得到、摸得着的具体实体人类都有:姓名性别年龄属性,有说话的方法.张三是一个对象,他的姓名属性的值:张三性别的属性的值:男年龄属性的值:20张三会说话对象可以叫做类的实例(Instance)类不占内存,对象才占内存.101C#基础全部类的定义定的定义语法:访问修饰符class类名成员;.类中可以包含变量的定义、方法。请练习定义一个人类.人类分别用三个变量来表示姓名性别年龄,有一个打招呼的方法,有一个走路的方法.102C#基础全部类的实例化(S)类的实例化,用关键字new语法:类实例名=new类();类的成员的访问:实例名.属性实例名.方法名();字段、方法、属性(后面讲)都可以叫做类的成员Me

38、mber,它们都需要定义访问级别。访问级别的用处在于控制成员在哪些地方可以被访问,这样达到面向对象中“封装”的目的.访问修饰符:publicprivate(internalprotected)103C#基础全部属性字段用public修饰的问题用private属性的定义.get;set;属性是为了保护与之相对应的字段的.保证对字段的读取和赋值符合要求.属性可分为:读写、只读、只写。允许外部访问的变量一定要声明为属性。104C#基础全部类的练习:Student定义一个学生类,有六个属性,分别为姓名、性别、年龄、语文、数学、英语成绩。有2个方法:一个打招呼的方法:介绍自己叫XX,今年几岁了。是男同学

39、还是女同学。两个计算自己总分数和平均分的方法。显示:我叫XX,这次考试总成绩为X分,平均成绩为X分实化两个对象并测试:张三男18三科成绩为:909580小兰女16三科成绩为:9585100105C#基础全部类的构造方法(S)构造方法用来创建对象,并且可以在构造函数中对对象进行初始化。构造函数是用来创建对象的特殊方法,方法名和类名一样,没有返回值,连void都不用。构造函数可以有参数,new对象的时候传递函数参数即可如果不指定构造函数,则类有一个默认的无参构造函数。如果指定了构造函数,则不再有默认的无参构造函数,如果需要无参构造函数,则需要自己来写。构造函数可以重载,也就是有多个参数不同的构造函

40、数。认识类图106C#基础全部c#中的类图和通用类图- age:int- name:string+ Name:string类名类名Student+SayHi():void107C#基础全部练习1给前面写的学生类添加构造方法.使在实例化学生类的时候可以通过构造方法对姓名性别年龄语数英等属性赋值,也可以只对姓名和性别赋值.年龄默认为18岁,语数英成绩默认为0分.张三男18三科成绩为:909580小兰女16三科成绩为:9585100109C#基础全部练习2:写一个Ticket类,有一个距离属性(本属性只读,在构造方法中赋值),不能为负数,有一个价格属性,价格属性只读,并且根据距离distance计算

41、价格Price(1元/公里):0-100公里票价不打折101-200公里总额打9.5折201-300公里总额打9折300公里以上总额打8折有一个方法,可以显示这张票的信息.90公里90块钱测试上面的类.110C#基础全部临时回忆(温故而知新)参数中使用out和ref的区别(传出/传入传出)数组做为参数(讲过了)params,看Console.WriteLine();可变数组我也可以做到111C#基础全部命名空间namespace(命名空间),用于解决类重名问题,可以看做“类的文件夹”。如果代码和被使用的类在一个namespace则不需要using。在不同命名空间下的类调用有两种方法:写全称命名

42、空间.类名先using引用命名空间,再调用112C#基础全部字符串的处理(S)string可以看做是char的只读数组。charc=s1;。例子:遍历输出string中的每个元素。C#中字符串有一个重要的特性:不可变性,字符串一旦声明就不再可以改变。所以只能通过索引来读取指定位置的char,不能对指定位置的char进行修改。如果要对char进行修改,那么就必须创建一个新的字符串,用s.ToCharArray()方法得到字符串的char数组,对数组进行修改后,调用newstring(char)这个构造函数(暂时不用细研究)来创建char数组的字符串。一旦字符串被创建,那么char数组的修改也不会

43、造成字符串的变化。例子:将字符串中的A替换为a。113C#基础全部字符串练习一:随机输入你心中想到的一个名字,然后输出它的字符串长度 Length:可以得字符串的长度练习二:两个学员输入各自最喜欢的课程名称,判断是两个学员输入各自最喜欢的课程名称,判断是否一致否一致,如果相等如果相等,则输出你们俩喜欢相同的课程则输出你们俩喜欢相同的课程.如果如果不相同不相同,则输出你们俩喜欢不相同的课程则输出你们俩喜欢不相同的课程.上题中两位同学输入上题中两位同学输入 c#和和 C#代表同一门课代表同一门课,怎么办怎么办?字符串的连接字符串的连接+,两边只要有一个是字符串类型两边只要有一个是字符串类型,另一个

44、另一个也会被自动转换成字符串类型也会被自动转换成字符串类型一切类型都可以调用一切类型都可以调用.ToString()方法转换成字符串类方法转换成字符串类型型.114C#基础全部String类常用方法(S)ToLower():得到字符串的小写形式。注意字符串是不可变的,所以这些函数都不会直接改变字符串的内容,而是把修改后的字符串的值通过函数返回值的形式返回。s.ToLower()与s=s.ToLower()ToUpper():得到字符串的大写形式;Trim()去掉字符串两端的空白。s1.Equals(s2,StringComparison.OrdinalIgnoreCase),两个字符串进行比较

45、不区分大小写的比较。s1=s2115C#基础全部常见疑问谁说字符串不可变?strings=abc;s=123,s这不是变了吗要区分变量名和变量指向的值的区别。程序中可以有很多字符串,然后由字符串变量指向他们,变量可以指向其他的字符串,但是字符串本身没有变化。字符串不可变性指的是内存中的字符串不可变,而不是变量不变。strings10=s1;/s10指向s1指向的字符串,而不是s10指向s1,哪怕s1以后指向了其他内存,那么s10还是指向helloabcadmin888888s1s1116C#基础全部字符串的分割(S)stringSplit(paramscharseparator):将字符串按照

46、指定的分割符分割为字符串数组;stringSplit(charseparator,StringSplitOptionsoptions)将字符串按照指定的char分割符分割为字符串数组(options取RemoveEmptyEntries的时候移除结果中的空白字符串);练习:从日期字符串(2008-08-08)中分析出年、月、日;2008年08月08日。让用户输入一个日期格式如:2008-01-02,你输出你输入的日期为2008年1月2日117C#基础全部字符串函数详解字符串替换:stringReplace(stringoldValue,stringnewValue)将字符串中的出现oldVal

47、ue的地方替换为newValue。例子:名字替换。取子字符串:stringSubstring(intstartIndex),取从位置startIndex开始一直到最后的子字符串;stringSubstring(intstartIndex,intlength),取从位置startIndex开始长度为length的子字符串,如果子字符串的长度不足length则报错。boolContains(stringvalue)判断字符串中是否含有子串valueboolStartsWith(stringvalue)判断字符串是否以子串value开始;boolEndsWith(stringvalue)判断字符串是

48、否以子串value结束;intIndexOf(stringvalue):取子串value第一次出现的位置。LastIndexofTrim()TrimEnd()TrimStrat()IsNullOrEmpty()string.Join()IntIndexOf(stringvalue,intstartIndex)118C#基础全部字符串常用方法:学习查看msdnStringBuilder 和和 String 的区别?的区别?(*)答:String在进行运算时(如赋值、拼接等)会产生一个新的实例,而StringBuilder则不会。所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用String

49、Builder,不要使用String如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单

50、而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的。119C#基础全部字符串的处理练习课上练习1:接收用户输入的字符串,将其中的字符以与输入相反的顺序输出。abccba课上练习2:接收用户输入的一句英文,将其中的单词以反序输出。hellocsharpsharpchello课上练习3:从Email中提取出用户名和域名:。课上练习4:文本文件中存储了多个文章标题、作者,标题和作者之间用若干空格(数量不定)隔开,每行一个,标题有的长有的短,输出到控制台的时候最多标题长度10,如

51、果超过10,则截取长度8的子串并且最后添加“.”,加一个竖线后输出作者的名字。让用户输入一句话,找出所有e的位置让用户输入一句话,判断这句话中有没有邪恶,如果有邪恶就替换成这种形式然后输出,如:老牛很邪恶,输出后变成老牛很*;把“诸葛亮”,”鸟叔”,”卡卡西”,”卡哇伊”变成诸葛亮|鸟叔|卡卡西|卡哇伊,然后再把|切割掉总结字符串常用的方法;120C#基础全部对象的引用(S)举例:结构版的Person的赋值与类版的Person的赋值int、decimal、bool、doublebyte枚举结构等类型(值类型)是传递拷贝;对象(引用类型)则是传递引用。方法间传递对象String引用类型数组类结构

52、如果写构造函数那么就要把结构中所有的字段全部赋值如果在结构中写了构造函数,那么默认的构造函数还有,和类不同在类中写了有参数的构造函数,无参数的构造函数直接被干掉了并且在类中的构造函数中可以不用把所有字段都赋值121C#基础全部堆和栈的区别堆和栈的区别(*)栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;局部值类型变量、值类型参数等都在栈内存中。堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小。122C#基础全部值类型和引用类型的区别值类型和引用类型的区别1.将一个值类型变量赋给另一个值类型变量时,将复制包含的值。引用类型变量的赋值只

53、复制对对象的引用,而不复制对象本身。2.值类型不可能派生出新的类型:所有的值类型均隐式派生自System.ValueType。但与引用类型相同的是,结构也可以实现接口。3.值类型不可能包含null值:4.每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。123C#基础全部.net中哪些是值类型?哪些是引用类型?数组:数组:int,string数组数组接口:接口:interface接口接口自定义类:自定义类:class字符串:字符串:string基类:基类:System.Object类类引用类型引用类型结构:结构:struct结构类型结构类型枚举:枚举:enum枚举类型枚举类型布尔型:

54、布尔型:bool字符型:字符型:char浮点型:浮点型:float长整型:长整型:long整型:整型:int基本数据类型基本数据类型值类型值类型描述描述类别类别124C#基础全部为什么要继承分别写一个Teacher类和一个Student的类,分析他们应该有哪些属性和方法.假如系统还要再加入班主任类、校长类(Principal)、家长类.试分析这几个类的属性?代码冗余,怎么解决?125C#基础全部冗余的解决方案126C#基础全部继承的符号:利用继承实现Student类和Teacher类继承自Person类.Student类和Teacher类继承父类的属性和方法.Student类和Teacher类

55、还有自己独有的属性和方法.127C#基础全部继承的使用(S)classStudent:Person.;classTeacher:Person.;子类继承了父类的成员,子类还可以有自己的成员.Person叫做父类(基类)Student和Teacher叫子类(派生类)Student继承了Person类Person类派生了Teacher类在c#中,所有的类都直接或间接的继承自了object类.(当我们定义一个类的时候,如果没有写:继承一个类,那么这个类就继承了object类)128C#基础全部练习:写一个Reporter类和一个Programmer类,Driver类,他们都有一个打招呼的方法,不同的

56、是Reporter打招呼是说大家好,我叫XX,我的爱好是XXX,Programmer的打招呼的方法是说大家好,我叫XX,我今年XX岁了,我已经工作XX年了?摄影家类Photographer129C#基础全部显示调用父类的构造方法实例化子类时是否调用了父类的构造方法?顺序如何?(子类会调用父类默认无参的)利用构造方法设置公共属性,也就是说若父类的构造方法有参数,应该如何处理呢?显示调用父类的构造方法,关键字:base130C#基础全部Protected(S)protected访问修饰符不允许其他非子类访问修改刚刚的练习,父类中把访问修饰符改成protected子类中还能被调用到吗?其他非子类能调

57、用吗?继承的传递性.继承的单根性.131C#基础全部类型转换(lsp)(S)Personp=newTeacher();子类可以隐式的转换成父类.Teachert=(Teacher)p;is和astypeAistypeB仅判断typeAasTypeB先判断,再转换如果成功了那就是真的成功了,如果不成功返回空/as也是转换,但是如果转换不了的不报异常,返回来的是null /is转换,返回的是bool值,true就是能转换,false就是不能转换132C#基础全部练习:自己定义一个父类Person,两个子类Teacher和Student类.Person写一个有参数的构造方法.自己试试,子类可以自动转

58、父类,父类转子类要通过强转.为了不出错,可以先通过is判断或用as转换.133C#基础全部ArrayList和HashTable为什么要用ArrayList(List)和HashTable(字典Dictionary)ArrayList元素的增加、插入、删除、清空、排序、反转。134C#基础全部ArrayList集合可以看做数组-创建一个长度为10的数组数组长度为10,要插入新的数据,就得重新创建数组排序-长度固定,不太灵活使用集合即可方便解决这些问题可以将集合看作为“长度可变的,具有很多方法的数组”135C#基础全部ArrayList方法引用System.Collection命名空间手动添加(

59、必须记住命名空间)光标停在代码中,快捷键或鼠标右键(必须记住类名)学习集合可以注意归纳一下可用的方法添加数据:Add()、AddRange()-添加数组用add使用Add可以添加数据,并且与数组一样可以使用“下标”(索引)访问数据使用下标访问的数据是object类型的,必要时需要进行转换,必须满足里氏转换原则为什么要把Add参数设为object的呢?为了通用AddRange将数组或集合当中的数据批量的一个一个的加进来数组或集合中有多少个数据,新集合中就添加了多少个数据,类型等一一对应但Add同样可以将数组或集合作为数据加入,但此时加入将数组或集合作为一个项添加过去只有找到该项,才能通过“下标”

60、访问到其中的数据练习创建一个集合,里面添加一些数字,求平均值与和136C#基础全部ArrayList方法插入数据:Insert()使用语法:集合名.Insert(位置,值);位置的确定,使用插入好的数据来数第二个数据就是要插入的数据内容练习:有一个集合,里面存的数据是246810现在要在里面插入一些数据,使这个集合中的数据变为12345678910删除数据:Remove()、RemoveAt()、Clear()Remove方法arrayList.Remove(数据)删掉集合中,与“数据”相同的数据当集合中不存在这个数据时,直接忽略方法执行从左至右删掉第一个出现的数据,其后数据不考虑Remove

61、At方法删掉指定索引出的数据,其后数据依次向前移动当索引超出范围后,异常Clear()137C#基础全部ArrayList方法判断是否包含:Contains()Sort等可以处理排序功能(甚至还有Max、Min、AVG等)获得长度使用Count属性练习写一个长度为10的集合,要求在里面随机地存放10个数字(0-9),但是要求所有的数字不重复intIndexOf(objectargs)Random的方法Next()产生一个整数范围内的随机数,Next(num)产生一个小于num的非负整数,就是0到num-1这些数字Next(minNum,maxNum)产生一个在minNum到maxNum-1之间

62、的数字,两端取得到138C#基础全部HashTable方法HashTable的增、删、查、判存。添加数据,都是“键值对”的形式键值对均是object类型键值对中的键就是为了找数据用的,必须提供,不允许重复Hashtable使用键作为寻找的方式,是一种无序的结构得到数据使用键,将返回object类型的,由键对应的数据强转,使用里氏转换原则139C#基础全部foreachforeach(知道实现了Ieumerable接口)语法:foreach(集合中单个的类型局部变量名in集合对象)/循环体/循环体当中“局部变量”表示集合中遍历的数据循环的过程(重点)总是从开始,一直循环到结束,中间不会停下来,除

63、了break临时变量,可以为其赋值吗?数组或集合中的数据会受到影响吗?常规下,数组或集合此时是只读的临时变量的类型设断点查看使用var判断140C#基础全部泛型集合List泛型集合就是为了专门处理某种类型ArrayList对应的是 List在尖括号中写什么类型,这个集合就变成了什么类型的集合添加数据、插入数据、索引访问数据都是这个类型的,不用考虑所有的转化问题141C#基础全部DictionaryDictionary默认提供命名空间,提倡使用Hashtable对应的是Dictionary在尖括号中填入键的类型与值的类型,那么这个集合就变成了一个指定的键值对模型其使用方式与Hashtable一样

64、142C#基础全部泛型集合总结ArrayList为什么要有ArrayList因为数组的长度问题,提供很多方法泛型集合List集合 与Arrayist的区别是什么?类型可以自定义Hashtable集合,为什么要有这个集合想要查找,就得有一个对应关系就是通过键值来提供就需要将键与值用一种办法绑定到一起,Add(键,值)访问键的时候,可以直接找到值用什么方法,通过键访问到值,hashtable键返回一个值但是hashtable中都是object类型,因此使用时要考虑强传143C#基础全部文件管理(File类)基本操作:判存、复制、移动、删除基本方法:();();();()144C#基础全部简单的文件

65、读写文本文件编码,文本文件有不同的存储方式,将字符串以什么样的形式保存为二进制,这个就是编码,UTF-8、ASCII、Unicode,gbkgb2312等,如果出现乱码一般就是编码的问题,文本文件相关的函数一般都有一个Encoding类型的参数,取得编码的方式:Encoding.Default、Encoding.UTF8、Encoding.GetEncoding(GBK)输出Encoding.GetEncodings(),所有编码。什么是文本文件。拖到记事本中还能看得懂的就是文本文件,doc不是。常用静态方法voidAppendAllText(stringpath,stringcontents

66、),将文本contents附加到文件path中boolExists(stringpath)判断文件path是否存在stringReadAllLines(stringpath)读取文本文件到字符串数组中stringReadAllText(stringpath)读取文本文件到字符串中voidWriteAllText(stringpath,stringcontents)将文本contents保存到文件path中,会覆盖旧内容。WriteAllLines(stringpath,stringcontents),将字符串数组逐行保存到文件path中,会覆盖旧内容。145C#基础全部File类的方法File

67、.Copy(“source”, “target”, true);/文件拷贝文件拷贝,true表表示当文件存在时示当文件存在时“覆盖覆盖”,如果不加,如果不加true,则文件存在报异常。则文件存在报异常。();/判断文件是否存在判断文件是否存在(“source”, “target”);/移动(剪切),思考如何为文件重命名移动(剪切),思考如何为文件重命名?(“path”);/删除。如果文件不存在?不存在,不报错删除。如果文件不存在?不存在,不报错(“path”);/创建文件创建文件146C#基础全部File类的方法:操作文本文件(“path”, Encoding.Default);/读取所有行,

68、返回读取所有行,返回string(“path”, Encoding.Default);/读取所有文本返回读取所有文本返回string(“path”);/读取文件,返回读取文件,返回byte,把文件作为二进制来处把文件作为二进制来处理。理。=(“path”, new string4 ,Encoding.Default);/将将string数组按行写入文件。数组按行写入文件。(“path”, “string”);/将字符串全部写入文件将字符串全部写入文件(“path”,new byte5);/将将byte全部写入到文件全部写入到文件()/将将string追加到文件追加到文件147C#基础全部简单的

69、文件读写ReadAllText与AppendAllTextReadAllLines与WriteAllLines文件编码简介ASCII编码Unicode编码UTF-8(通用转换格式)编码*Gb2312国标StreamReader与StreamWriter148C#基础全部目录管理(Directory类)基本操作:创建、移动和删除的功能命名空间System.IODirectory常用方法CreateDirectory()Move()Delete()Exist()149C#基础全部File类的方法:快速得到文件流 fs=(); /返回返回 fs=();/返回只读的返回只读的 fs=();/返回只写的

70、返回只写的 fs=new (参数参数);Stream(所有流的父类,是一个抽象类。)(所有流的父类,是一个抽象类。)文件操作的类都在文件操作的类都在System.IO.*;151C#基础全部多态隐藏基类方法与多态的实现(*S)子类可以有与父类方法名相同的方法签名不同(重载)签名相同(隐藏基类方法)子类可以重写父类方法虚方法重写方法重写基类方法一样可以调用基类方法多态就是对象可以表现多个类型的能力152C#基础全部多态抽象方法与抽象类(*S)抽象类与抽象方法由abstract修饰abstract的使用注意抽象方法没有方法体抽象成员只能存在于抽象类中抽象类可以有非抽象成员抽象类的派生类必须实现抽象

71、方法体抽象类只能用作基类,无法实例化153C#基础全部接口(*)完全抽象的一种约定接口就是用来实现的语法:访问修饰符interface接口名/接口成员定义InterfaceIfFlyvoidIFly();接口只有方法方法、属性、索引和事件的声明接口是用来实现的,所有成员默认为public163C#基础全部C#中的接口和类有什么异同。中的接口和类有什么异同。不同点:不能直接实例化接口。接口不包含方法的实现。接口可以多继承,类只能单继承。类定义可在不同的源文件之间进行拆分。相同点:接口、类和结构都可以从多个接口继承。接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。接口和类都可

72、以包含事件、索引器、方法和属性。C#支持多重继承么?支持多重继承么?类之间不支持,接口之间支持。类对接口叫做实现,不叫继承。类是爹、接口是能力,能有多个能力,但不能有多个爹。164C#基础全部多态小结几种建立多态的方式用父类实现多态用抽象类实现多态用接口实现多态版本控制需要保留基类方法使用new关键字需要重写方法时使用override关键字165C#基础全部类与成员的修饰符类public、internal、abstract、sealed、static成员(方法)public、private、protected、internalprotectedinternalabstract、virtual、

73、new、overridestatic166C#基础全部装箱与拆箱(*)将值类型“赋值”给引用类型对于值类型中的引用成员,保留原数据效率问题167C#基础全部异常与异常处理传统的错误表示方式:错误码。举例。需要知道不同错误码的含义,如果不处理错误码,则程序可能陷入不可以预置的错误。陈摄影师以为文件已经被删除造成的麻烦。错误码的缺点:不处理则很难发现,每次处理则很麻烦;难以看出错误的原因;容易使得程序进入不确定状态。trycatch。Exceptionex异常也是对象。Exception类主要属性:Message、StackTrace发生异常后程序默认就退出了,try代码块中的后续代码不会被执行。catch以后的代码则会继续执行。不要吃掉异常,一般情况下不需要处理异常。扔出自己的异常,扔:throw,抓住:catch169C#基础全部静态方法和实例方法(定义和调用)静态实例(非静态)static 关键字不需要static关键字使用类名调用使用实例对象调用在静态方法中,可以访问静态成员在实例方法中:可以直接访问静态成员在静态方法中,不可以直接访问实例成员在实例方法中:可以直接访问实例成员调用前初始化(*)实例化对象时初始化(*)170C#基础全部

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号