C sharp 基础入门课件_第1页
C sharp 基础入门课件_第2页
C sharp 基础入门课件_第3页
C sharp 基础入门课件_第4页
C sharp 基础入门课件_第5页
已阅读5页,还剩196页未读 继续免费阅读

下载本文档

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

文档简介

C 编程基础 概念 net与c 多语言 net dotnet 一般指 NetFramework框架 一种平台 一种技术 C sharp 一种编程语言 可以开发基于 net平台的应用 Java即是一种技术又是一种编程语言 net都能干什么 桌面应用程序WinformInternet应用程序ASP NET手机开发wp7C S 客户机 Client 服务器模式 Server qqB S 浏览器 Browser 服务器模式 Server Net开发学习路线 IDE介绍 IDE IntegratedDevelopment 集成开发环境 VisualStudio2010简介 一套完整的开发工具集用于开发桌面应用程序 ASP NETWeb应用程序 XML WebService 移动应用程序为快速开发提供强大支持 IDE及 Net的版本 了解 Net1 1 Net2 0 Net3 x Net4 x VisualStudio2003 VisualStudio2005 VisualStudio2008 VisualStudio2010 向下兼容 Net1 0 VisualStudio2002 MSDN介绍 MSDN的全称是MicrosoftDeveloperNetwork 这是微软公司面向软件开发者的一种信息服务 MSDN实际上是一个以VisualStudio和Windows平台为核心整合的开发虚拟社区 包括技术文档 在线电子教程 网络虚拟实验室 微软产品下载 几乎全部的操作系统 服务器程序 应用程序和开发程序的正式版和测试版 还包括各种驱动程序开发包和软件开发包 Blog BBS MSDNWebCast 与CMP合作的MSDN杂志等等一系列服务 点击查看msdn百科 VisualStudio介绍1 安装setup exeinstall exeautorun启动创建解决方案 项目认识vs的各部分 菜单 快捷键 工具栏 窗口 VisualStudio各个视图的打开 开发环境的重置C 源文件 类 一般以cs结尾C 程序的入口是Main函数 在Main中写代码就行 暂时不用关心其他部分是什么意思 VisualStudio介绍2 保存项目 打开项目 交作业交哪些文件 作业的命名格式 C 年级 姓名 rar先学习两句话 Console WriteLine Hello World Console ReadKey 每一句话以 号结束生成程序运行一下生成的 exe程序设置字体及行号显示创建多个项目启动项目设置项目的加载与卸载 c 中的注释符 注释方式 单行注释 多行注释 文档注释 小练习 练习 编程输出以下内容自己练习一下三种注释符 第一种 单行注释以 开头 后面的就是注释内容第二种 多行注释以 开头 结束之间的是注释内容第三种 文档注释在方法或类的上一行输入 就会产生 计算机使用基本技巧 常用键介绍 Home End PageUp PageDown Shift ctrl home ctrl end一段文字的删除 del backspace ctrl actrl kf学会使用复制粘贴 Ctrl c v x对话框中的使用插入 覆盖模式的困惑 学会使用Ctrl Z撤销上一次操作 等的的全角半角问题 出错 意外的字符 VS窗口的拖拽遇到异常 报错不要慌 目前经常用到的快捷键 Ctrl F5F5F6 region和 endregion 操作系统一般Windows 公共语言运行库 CLR VC NET C VB NET VJ NETFramework类库 FCL 软件系统依赖关系 Net简介 了解 NetFramework类库 CLR公共语言运行时 操作系统 应用程序 应用程序 操作系统 平台无关 CLR NetFramework进行了隔离 Windows Linux Mono 智能手机 Web 学会 Net什么都能开发 知识移植 更安全 更省心 代码托管 罕用指针 垃圾回收 语言无关 VB Net C 都调用同样的类 同样的方法 VB Net写的类C 也可以调用 模糊了语言的差别 net是如何实现语言无关性的 C VB NET 代码被执行 MSIL CLR 通用语法 计算机不用了解 CLR执行IL C 编译器 VB NET编译器 基本框架类 WinForms ADO NET和XML类 NETFramework NETFramework类库 ASP NET CLS CLR CTS 变量1 计算机使用内存来存储数据 我们在计算机中存储数据和客人住旅馆很类似 我们住旅馆一般要做以下事情 1 开房间 单人间 双人间 总统套间 2 入住 变量2 要在计算机中存一个数字1000 需要两句话 inta 开一个能放数字的空间a 1000 把1000放进去 声明变量的语法格式 数据类型变量名 赋值 变量名 值 可以a 3 14 吗 变量3 计算机中各式各样的数据33 14100thequickbrownfoxjumpsoverthelazydog张三李四True2011 3 6 更多的数据类型 C 中的数据 int 35100 10double 3 1410 5 3 14 5 0char A b a string Zhangsan 李四 计算机 HelloWorld a decimal 存储金钱5 62decimald 5 55m decimald1 5 变量的声明方法 A 数据类型变量名称 intage 变量的赋值age 18 B 定义时赋值 数据类型变量名称 值 intage 18 C 如果一次要声明多个相同类型的变量可用逗号分隔 stringzsName lsName 变量一定要先声明 再赋值 才能使用 练习 定义一个变量pi 并把3 14存进去 然后显示在屏幕上 想一想下面代码的输出结果是 inti 10 Console WriteLine i 变量的命名 命名规则 1必须以 字母 或 符号开头 不要以数字开头2后面可以跟任意 字母 数字 下划线 注意 1 你起的变量名不要与c 系统中的关键字重复 2 在c 中 大小写是敏感的 3 同一个变量名不允许重复定义 先这么认为 不严谨 定义变量时 变量名要有意义C 变量命名编码规范 Camel命名法 首个单词的首字母小写 其余单词的首字母大写 Pascal命名规范 每一个单词第一字母都大写如果使用到英文单词的缩写 全部用大写 下面的变量名称哪些正确 principal cost price marks 3 lastname city 123rate discount zipcode City int 赋值运算符和赋值表达式 赋值运算符 a a 1 这里的 号是赋值运算符 不是数学义意上的相等 变量可以重复赋值 一旦给一个变量赋了新值 那么变量中的老值就不复存在了 右边代码的输出结果 演示 定义一个变量存储客户的姓名 然后在屏幕上显示 你好 某某 某某代表客户的姓名 号可以连接两个字符串 这里的 号表示连接的意思 练习 1 定义3个变量 分别存储一个人的姓名 张三 年龄 28 和工资 7600 33 然后在屏幕上显示 我叫XX 今天X岁了 我的工资是XX元 2 定义一个变量存储一个人的年龄 18 然后发现这个人的年龄不是18岁 要把这个人的年龄修改成20岁 本题体会变量可以被重复多次赋值 最后把这个人的年龄输出到屏幕上 变量练习 3 定义四个变量 分别存储一个人的姓名 性别 年龄 电话 然后打印在屏幕上 我叫X 我今年X岁了 我是X生 我的电话是XX 4 在屏幕上输出 我的手机是philips型号 998价格 1500元重量 0 3kg请定义变量存存储上面的值 并显示在屏幕上 5 定义两个变量如 ab分别赋值为10和5 写程序交换两个变量的值 字符串类型 再学习一句话 Console ReadLine 用于接收用户的输入 要定义一个字符串变量来接收变存储用户输入的值 1 练习 问用户喜欢吃什么水果 假如用户输入 苹果 则显示 哈哈 这么巧呀 我也喜欢吃苹果 2 练习 请用户输入姓名 然后在屏幕上显示 你好 XXX XXX为用户刚刚输入的姓名 字符串中的转义 能在字符串中输出双引号吗 在屏幕上显示 c 中的字符串用 号包含起来 一个字符 组成转译字符 一般用于表示特殊符号 字在字符串前面表示不转译常用的转译符 n b t 算术运算符及算术表达式 算术运算符 取余数取模 算术表达式 由算术运算符连接起来的式子 如 1 1a b 变量ab前面已声明并赋初值 演示 某学生三门课成绩为 语文 90数学 80英语 91 编程求总分和平均分 优先级 先乘除 后加减 有括号先算括号里的 相同级别的从左至右运算5 3 2小括号可以无限制的套用 但一定要成对出现 练习 练习1 定义两个数分别为10和20 打印出两个数的和 练习2 计算半径为5的圆的面积并打印出来 练习3 某商店T恤的价格为35元 件 裤子的价格为120元 条 小明在该店买了3件T恤和2条裤子 请计算并显示小明应该付多少钱 算术运算符 自动类型转换 下面代码的输出结果是什么 inta 10 b 3 intmod a b doublequo a b Console WriteLine mod Console WriteLine quo 类型自动转换规则 参与运算 算术运算和赋值运算 的操作数和结果类型必须一致 当不一致时 满足下面条件时 系统自动完成类型转换两种类型兼容例如 int和double兼容目标类型大于源类型例如 double int对于表达式如果一个操作数为double型 则整个表达式可提升为double型比如前面打8 8折的练习题 求10 3求余数要想得到3 333的处理 强制类型转换 如上题中打完8 8折后出现小数 商店为了结算方便 只收用户整数部分的钱 如本应收用户303 6 现在只收用户303元 应该如何做 语法 数据类型名 待转换的值 如 intb int 3 14 强制类型转换 数据类型一定要相兼容下面的写法对吗 intnumber int 3 14 类型转型 问题 让用户输入他的语文和数学成绩 计算他的总成绩并显示出来 Convert不再仅是内存级别的转换 而是考虑数据意义的转换 Convert是一个加工 改造的过程通过Convert ToInt32 能转换成int类型的数据 来把其他类型数据转换成int类型练习 让用户输入姓名语文数学英语三门课的成绩 然后给用户显示 XX 你的总成绩为XX分 平均成绩为XX分 练习 练习 编程实现计算几天 如46天 是几周零几天 练习 编程实现107653秒是几天几小时几分钟几秒 修改上面的题目 让用户输入 算术运算符和复合赋值运算符 自加一有前加和后加 自减一有前减和后减一元运算符 比二元的 优先级高 练习 1请说出上面程序执行完成后 var1中的值 上题中如果改成 Var1 var2 var3 Var1 关系运算符 比较运算 老鼠的重量 1 兔子的寿命 3 乌龟的寿命 1000 39 18我的年龄 20 你的年龄 20 比大比小的结果是什么 什么是bool类型 布尔 在计算机中 我们用什么数据类型来表示一句话的对错 一个条件的成立与不成立 布尔 bool 类型 bool值只有两个真 ture假 false关系运算的结果是布尔类型的如在计算机中描述张三 20岁 比李四 18 小 这句话的结果 练习看看上一页ppt中四句话的结果 逻辑运算符 表达式1 表达式2 当表达式1 2全为ture时 其表达式的结果为true表达式1 表达式2 当表达式1 2有一个为ture时 其结果为ture 表达式 如果表达式的结果为true 则取反后为false 反之为true优先级 练习 让用户输入张三的语文和数学成绩 输出以下判断是否正确 正确输出True 错误输出False1 张三的语文和数学成绩都大于90分2 语文和数学有一门是大于90分的 练习 写下判断闰年的表达式 设待判断的年份变量为year 润年的判定 符合下面两个条件之一 年份能够被400整除 2000 年份能够被4整除但不能被100整除 2008 让用户输入一个年份 如果是润年 则输出true 如果不是 则输出false 2100 1600 1800 2009年是闰年吗 if结构 编程实现 如果张三的考试成绩大于90分 那么爸爸奖励他100元钱 使用if结构可以实现上面的问题if结构的基本语法 if 条件 if 条件 语句 语句1 语句2 用一对大括号来组成语句块 练习 让用户输入年龄 如果输入的年龄大于18 含 岁 则给用户显示你已成年 如果张三的语文成绩大于90并且音乐成绩大于80语文成绩等于100并且音乐成绩大于70 则奖励100元 让用户输入用户名和密码 如果用户名为admin 密码为mypass 则提示登录成功 if else 如果张三的考试成绩大于90 含 分 那么爸爸奖励他100元钱 否则的话 爸爸就让张三写学习总结 使用if能否实现 更好的实现 if else语法 if 条件 语句1 else 语句2 练习 1 盖茨买了一筐鸡蛋 如果坏蛋少于5个 他就吃掉 否则他就去退货2 要求用户输入两个数a b 如果a能被b整除或者a加b大于100 则输出a的值 否则输出b的值3 对学员的结业考试成绩评测 考虑用if好还是用if else好 成绩 90 A90 成绩 80 B80 成绩 70 C70 成绩 60 D成绩 60 E if elseif 对学员的结业考试成绩评测成绩 90 A90 成绩 80 B80 成绩 70 C70 成绩 60 D成绩 60 E用if else实现 更好的方法 if elseif if elseif流程图 课上练习 学编程不是看书 不是听老师讲 而是自己动手写 练习1 提示用户输入密码 如果密码是 888888 则提示正确 否则要求再输入一次 如果密码是 888888 则提示正确 否则提示错误 程序结束 练习2 提示用户输入用户名 然后再提示输入密码 如果用户名是 admin 并且密码是 888888 则提示正确 否则 如果用户名不是admin还提示用户用户名不存在 如果用户名是admin则提示密码错误 练习3 提示用户输入年龄 如果大于等于18 则告知用户可以查看 如果小于10岁 则告知不允许查看 如果大于等于10岁并且小于18 则提示用户是否继续查看 yes no 如果输入的是yes则提示用户请查看 否则提示 退出 你放弃查看 为什么使用switch 李四的年终工作评定 如果定为A级 则工资涨500元 如果定为B级 则工资涨200元 如果定为C级 工资不变 如果定为D级工资降200元 如果定为E级工资降500元 设李四的原工资为5000 请用户输入李四的评级 然后显示李四来年的工资 switch case switch case语法 switch 表达式 变量 case值1 语句块1 break case值2 语句块2 break default 语句块3 break if elseif与switch的比较 相同点 都可以实现多分支结构不同点 switch 一般只能用于等值比较if elseif 可以处理范围 练习 说出已学过的数据类型有哪些 举例说明已学过的运算符有哪些 请用户输年份 输入月份 输出该月的天数 对学员的结业考试成绩评测 改成用Switch来做 成绩 90 A90 成绩 80 B80 成绩 70 C70 成绩 60 D成绩 60 E 循环结构 实际生活中的循环 打印100份试卷10000米长跑车轮李四这次考试又粗心了 爸爸让他写1000遍 下次考试一定要细心 如何编程实现上面的问题 Console WriteLine 下次考试一定要细心 Console WriteLine 下次考试一定要细心 Console WriteLine 下次考试一定要细心 使用循环解决 聪明的解决方法 inti 0 while i 1000 Console WriteLine 下次考试一定要细心 i while 语法 while 循环条件 循环体 特点 先判断 再执行 练习 打印100次 欢迎您来CBD学习 输入班级人数 然后依次输入学员成绩 计算班级学员的平均成绩和总成绩老师问学生 这道题你会做了吗 如果学生答 会了 y 则可以放学 如果学生不会做 n 则老师再讲一遍 再问学生是否会做了 直到学生会为止 才可以放学 直到学生会或老师给他讲了10遍还不会 都要放学2006年培养学员80000人 每年增长25 请问按此增长速度 到哪一年培训学员人数将达到20万人 do while 明天小兰就要登台演出了 老师说再把明天的舞蹈表演一遍 如果满意 小兰就可以回家了 否则就需要再练习一遍 直到老师满意为止 whileordo while do while为先执行 再判断do 循环体 while 条件 练习 练习1 计算1到100之间整数的和 练习2 要求用户输入用户名和密码 只要不是admin 888888就一直提示用户名或密码错误 请重新输入 练习3 不断要求用户输入学生姓名 输入q结束 练习4 不断要求用户输入一个数字 然后打印这个数字的二倍 当用户输入q的时候程序退出 练习5 不断要求用户输入一个数字 假定用户输入的都是正整数 当用户输入end的时候显示刚才输入的数字中的最大值练习6 张三先唱一遍要表演的歌曲 老师觉得张三唱歌不过关 就让张三再唱一遍 老师满意则张三可以下课 不然则需要再唱一遍 再问老师是否满意 while与do while区别 通过练习 希望大家已经掌握这两种循环 语法不同初始值不满足循环条件时 while循环一次都不执行do while循环会执行一次 程序调试 设置断点单步运行观察变量 for 连续输出100次 我下次一定细心 比较用for和while 哪种更好 问题1 求1 100间的所有偶数和 问题2 找出100 999间的水仙花数 问题3 输出九九乘法表 循环的嵌套 语法 for 表达式1 表达式2 表达式3 循环体4 练习 Break break用于循环中 退出当前循环 练习 练习1 循环录入5个人的年龄并计算平均年龄 如果录入的数据出现负数或大于100的数 立即停止输入并报错 练习2 在while中用break实现要求用户一直输入用户名和密码 只要不是admin 888888就一直提示要求重新输入 如果正确则提登录成功 1 100之间的整数相加 得到累加值大于20的当前数 continue 立即结果本次循环 判断循环条件 如果成立 则进入下一次循环 否则退出循环 举例 运动员跑步喝水的例子 练习 练习1 用whilecontinue实现计算1到100 含 之间的除了能被7整除之外所有整数的和 练习2 打印九九乘法表 小节 顺序结构 语句顺序执行分支结构 语句在满足条件下执行if if else if elseif switch case表1 表2 表3 三元 循环结构 语句在满足条件下循环执行多次while do while for跳转语句break continue goto 枚举 常量 结构 确定数量 确定值的几个取值 东西南北 男女 上中下 enumGender male female enumQQStatus online offline hidden 枚举的用法 QQStatusstatus QQStatus online 和用字符串比起来 用枚举的好处就是限定了变量的取值范围 程序处理起来更方便 const类型常量名 常量值 staticvoidMain string args constintPI 3 14 PI 3 20 字符串与枚举的转换 publicenumGender male famale Console WriteLine 你的性别 0 Gender male ToString Gender Enum Parse typeof Gender male 每一个值都对应一个数字典型的枚举类型 MessageBox Show的参数 后面会学到 结构体 为什么要使用结构 例如c 中ColorPoint都是结构 访问修饰符struct结构名 定义结构成员 publicstructPerson publicstringName publicintAge publicstringHobby publicintPopularity publicvoidSayHi 练习 1定义一个结构叫MyColor 有三个成员 分别为red green blue声明一个MyColor类型的变量 并对其成员赋值 使MyColor可以表示成一个红色 2定义一个结构类型Person 有三个成员 分别为姓名 性别 年龄声明两个Person类型的变量 分别表示张三男18岁 小兰女16岁 数组 一次语文测试后 老师让班长统计每一个学生的成绩并计算全班 全班共60人 的平均成绩 然后把所有成绩显示出来 如何声明变量 好的解决方法 使用数组 数组 保存多个值 几乎任意类型都可以声明数组 int nums 5 3 8 int nums newint 3 int nums newint 3 5 3 8 个数和声明数必须一致int nums newint 5 5 3 8 错误int nums newint 5 3 8 正确 可以省略数组个字使用索引器访问指定编号位置的元素 访问数组元素 nums 0 nums 1 索引从0开始 取到的元素的类型就是数组元素的类型 还可以对数组元素进行赋值 数组的声明数组的赋值与取值常见问题 求平均值 求最大值 求和 排序 练习 练习1 从一个整数数组中取出最大的整数练习2 计算一个整数数组的所有元素的和 练习3 将一个字符串数组输出为 分割的形式 比如 梅西 卡卡 郑大世 练习4 将一个整数数组的每一个元素进行如下的处理 如果元素是正数则将这个位置的元素的值加1 如果元素是负数则将这个位置的元素的值减1 如果元素是0 则不变 练习5 将一个字符串数组的元素的顺序进行反转 3 a 8 haha haha 8 a 3 第i个和第length i 1个进行交换 求平均值 求最大值 求和 try catch的使用 简单用法 try 有可能出现错误的代码 catch 如果try中的代码出现异常 则进去catch中 方法 函数 介绍 函数就是将一堆代码进行重用的一种机制 函数就是一段代码 这段代码可能有输入的值 参数 可能会返回值 一个函数就像一个专门做这件事的人 我们调用它来做一些事情 它可能需要我们提供一些数据给它 它执行完成后可能会有一些执行结果给我们 要求的数据就叫参数 返回的执行结果就是返回值 strings Console ReadLine 就是一个有返回结果的函数 Console WriteLine hello 就是一个有执行参数的函数 只有告诉WriteLine被打印的数据它才知道如何打印 inti Convert ToInt32 22 则是一个既有参数又有返回值的函数 有了函数写代码就像拼积木 C 中的各种各样的技术其实就是通过for if等这些基础的语法将不同的函数按照一定的逻辑组织起来 方法 方法的定义 访问修饰符 static 返回值类型方法名 方法体 命名规则 方法名开头大写 参数名开头小写 参数名 变量名要有意义方法的调用 对于静态方法 如果在同一个类中 直接写名字调用就行了 return可以立即退出方法 常用的已经学过的方法 Console WriteLine Console Write Console ReadLine Console ReadKey int Parse string Convert ToInt32 string 对于由static修饰的方法 使用 类名 方法名 调用 如果在类中调用自己的由static修饰的方法 可以省略类名 变量的作用域 只讲局部变量 阅读下面的程序 说一下输出结果是多少 变量的作用域 在方法中定义的变量称为局部变量 其作用域从定义开始 到其所在的大括号结束为止 在一个方法中想要访问另一个方法中的变量 怎么办 两种解决方法 参数和返回值举例 写一个方法 判断一个年份是否是润年 方法中的return语句导致函数立即返回 在返回值为void的函数中return 在返回值非void的函数中return值 练习 自己写一个方法 1读取输入的整数 定义成方法 多次调用 如果用户输入的是数字 则返回 否则提示用户重新输入 2还记得学循环时做的那道题吗 只允许用户输入y或n 请改成方法3查找两个整数中的最大值 intMax inti1 inti2 4计算输入数组的和 intSum int values 思考 即然Console WiteLine 是方法 那么为什么WiteLine的参数可以是字符串类型 也可以是数字类型 还可以是布尔类型char类型呢 为什么要有方法的重载 函数重载 函数重名 函数的重名 staticvoidSayHello stringname Console WriteLine 我是 0 name staticvoidSayHello stringname Console WriteLine Iam 0 name staticvoidSayHello stringname Console WriteLine 我是 0 name staticvoidSayHello intage Console WriteLine 我的年龄 0 age staticvoidSayHello stringname Console WriteLine 我是 0 name staticintSayHello stringname return10 staticvoidSayHello stringname Console WriteLine 我是 0 name staticvoidSayHello stringname stringnickname Console WriteLine 我是 0 昵称是 1 name nickname 构成重载的条件 参数类型不同或者参数个数不同 不严谨的 与返回值无关 思考 方法只能返回一个值 当需要返回多个值时怎么办 例如 写一个方法 计算一个int类型数组中每个元素的总和和最大值与最小值 方法的out参数和ref参数 函数参数默认是值传递的 也就是 复制一份 例子 intage 20 IncAge age Console WriteLine age 0 age out则是内部为外部变量赋值 out一般用在函数需要有多个返回值的场所 例 int TryParse 方法的练习 重复让用户输入一个数 判断该数是否是质数 输入q结束 质数的判断用方法来实现将一个字符串数组输出为 分割的形式 比如 梅西 卡卡 郑大世 用方法来实现此功能 用方法实现找出一个int类型数组中最大值和最小值写一个方法 实现MyTryParse的功能 面向对象概念 世界是由什么组成的 化学家画家程序员万物皆对象试着描述杨老师和学生张三的特征和行为 属性 对象具有的各种特征每个对象的每个属性都拥有特定值例如 杨老师和张三的年龄不一样 属性 姓名 性别 年龄属性的值 方法 行为 动作 执行的操作 方法 杨老师的行为 上课 学生的行为 学习 练习 说说教室里有哪些对象 这些对象有哪些属性和方法 比如 电脑 灯 音箱等等一切皆对象 找出下列对象共性 张三 一个学生 杨老师 邻居售货员张阿姨 李四的爸爸 李四的妈妈门口停的奔驰S320汽车 老师开的QQ汽车 杨老师的解放牌大货车类 类是模子 确定对象将会拥有的特征 属性 和行为 方法 类是对象的类型人类解俊峰 inta 类和对象的区别 类是抽象的概念 仅仅是模板 比如说 人 类对象是一个你能够看得到 摸得着的具体实体 人 类都有 姓名 性别 年龄属性 有说话的方法 张三是一个对象 他的姓名属性的值 张三性别的属性的值 男年龄属性的值 20张三会说话对象可以叫做类的实例 Instance 类不占内存 对象才占内存 类的定义 定的定义语法 访问修饰符 class类名 成员 类中可以包含变量的定义 方法 请练习定义一个人类 人类分别用三个变量来表示姓名性别年龄 有一个打招呼的方法 有一个走路的方法 类的实例化 类的实例化 用关键字new语法 类实例名 new类 类的成员的访问 实例名 属性实例名 方法名 字段 方法 属性 后面讲 都可以叫做类的成员Member 它们都需要定义访问级别 访问级别的用处在于控制成员在哪些地方可以被访问 这样达到面向对象中 封装 的目的 访问修饰符 publicprivate internalprotected 属性 字段用public修饰的问题 属性的定义 get set 属性是为了保护与之相对应的字段的 保证对字段的读取和赋值符合要求 属性可分为 读写 只读 只写 允许外部访问的变量一定要声明为属性 类的练习 定义一个学生类 有六个属性 分别为姓名 性别 年龄 语文 数学 英语成绩 有2个方法 一个打招呼的方法 介绍自己叫XX 今年几岁了 是男同学还是女同学 两个计算自己总分数和平均分的方法 显示 我叫XX 这次考试总成绩为X分 平均成绩为X分 实化两个对象并测试 张三男18三科成绩为 909580小兰女16三科成绩为 9585100 类的构造方法 构造方法用来创建对象 并且可以在构造函数中对对象进行初始化 构造函数是用来创建对象的特殊方法 方法名和类名一样 没有返回值 连void都不用 构造函数可以有参数 new对象的时候传递函数参数即可如果不指定构造函数 则类有一个默认的无参构造函数 如果指定了构造函数 则不再有默认的无参构造函数 如果需要无参构造函数 则需要自己来写 构造函数可以重载 也就是有多个参数不同的构造函数 认识类图 c 中的类图和通用类图 析够函数 不能在结构中定义析构函数 只能对类使用析构函数 一个类只能有一个析构函数 无法继承或重载析构函数 无法调用析构函数 它们是被自动调用的 析构函数既没有修饰符 也没有参数 练习1 给前面写的学生类添加构造方法 使在实例化学生类的时候可以通过构造方法对姓名性别年龄语数英等属性赋值 也可以只对姓名和性别赋值 年龄默认为18岁 语数英成绩默认为0分 练习2 写一个Ticket类 有一个距离属性 本属性只读 在构造方法中赋值 不能为负数 有一个价格属性 价格属性只读 并且根据距离计算价格 1元 公里 0 100公里票价不打折101 200公里总额打9 5折201 300公里总额打9折300公里以上总额打8折有一个方法 可以显示这张票的信息 测试上面的类 临时加 根据学生问题添加 参数中使用out和ref的区别数组做为参数param 命名空间 namespace 命名空间 用于解决类重名问题 可以看做 类的文件夹 如果代码和被使用的类在一个namespace则不需要using 在不同命名空间下的类调用有两种方法 写全称命名空间 类名先using引用命名空间 再调用 字符串的处理 string可以看做是char的只读数组 charc s 1 例子 遍历输出string中的每个元素 C 中字符串有一个重要的特性 不可变性 字符串一旦声明就不再可以改变 所以只能通过索引来读取指定位置的char 不能对指定位置的char进行修改 如果要对char进行修改 那么就必须创建一个新的字符串 用s ToCharArray 方法得到字符串的char数组 对数组进行修改后 调用newstring char 这个构造函数 暂时不用细研究 来创建char数组的字符串 一旦字符串被创建 那么char数组的修改也不会造成字符串的变化 例子 将字符串中的A替换为a 字符串 练习一 随机输入你心中想到的一个名字 然后输出它的字符串长度Length 可以得字符串的长度练习二 两个学员输入各自最喜欢的课程名称 判断是否一致 如果相等 则输出你们俩喜欢相同的课程 如果不相同 则输出你们俩喜欢不相同的课程 上题中两位同学输入c 和C 代表同一门课 怎么办 字符串的连接 两边只要有一个是字符串类型 另一个也会被自动转换成字符串类型一切类型都可以调用 ToString 方法转换成字符串类型 常见疑问 谁说字符串不可变 strings abc s 123 s这不是变了吗要区分变量名和变量指向的值的区别 程序中可以有很多字符串 然后由字符串变量指向他们 变量可以指向其他的字符串 但是字符串本身没有变化 字符串不可变性指的是内存中的字符串不可变 而不是变量不变 strings10 s1 s10指向s1指向的字符串 而不是s10指向s1 哪怕s1以后指向了其他内存 那么s10还是指向 hello abc admin 888888 s1 s1 String类常用方法 ToLower 得到字符串的小写形式 注意字符串是不可变的 所以这些函数都不会直接改变字符串的内容 而是把修改后的字符串的值通过函数返回值的形式返回 s ToLower 与s s ToLower ToUpper 得到字符串的大写形式 Trim 去掉字符串两端的空白 s1 Equals s2 StringComparison OrdinalIgnoreCase 两个字符串进行比较不区分大小写的比较 s1 s2 字符串的分割 string Split paramschar separator 将字符串按照指定的分割符分割为字符串数组 string Split char separator StringSplitOptionsoptions 将字符串按照指定的char分割符分割为字符串数组 options取RemoveEmptyEntries的时候移除结果中的空白字符串 练习 从日期字符串 2008 08 08 中分析出年 月 日 2008年08月08日 让用户输入一个日期格式如 2008 01 02 你输出你输入的日期为2008年1月2日 字符串函数详解 字符串替换 stringReplace stringoldValue stringnewValue 将字符串中的出现oldValue的地方替换为newValue 例子 名字替换 取子字符串 stringSubstring intstartIndex 取从位置startIndex开始一直到最后的子字符串 stringSubstring intstartIndex intlength 取从位置startIndex开始长度为length的子字符串 如果子字符串的长度不足length则报错 boolContains stringvalue 判断字符串中是否含有子串valueboolStartsWith stringvalue 判断字符串是否以子串value开始 boolEndsWith stringvalue 判断字符串是否以子串value结束 intIndexOf stringvalue 取子串value第一次出现的位置 IntIndexOf stringvalue intstartIndex 字符串常用方法 学习查看msdn 字符串的处理练习 课上练习1 接收用户输入的字符串 将其中的字符以与输入相反的顺序输出 abc cba 课上练习2 接收用户输入的一句英文 将其中的单词以反序输出 hellocsharp sharpchello 课上练习3 从Email中提取出用户名和域名 abc 课上练习4 文本文件中存储了多个文章标题 作者 标题和作者之间用若干空格 数量不定 隔开 每行一个 标题有的长有的短 输出到控制台的时候最多标题长度10 如果超过10 则截取长度8的子串并且最后添加 加一个竖线后输出作者的名字 让用户输入一句话 找出所有e的位置 对象的引用 非常重要 举例 结构版的Person的赋值与类版的Person的赋值int decimal bool doublebyte枚举结构等类型 值类型 是传递拷贝 对象 引用类型 则是传递引用 方法间传递对象 net中哪些是值类型 哪些是引用类型 为什么要继承 分别写一个Teacher类和一个Student的类 分析他们应该有哪些属性和方法 假如系统还要再加入班主任类 校长类 家长类 试分析这几个类的属性 代码冗余 怎么解决 冗余的解决方案 继承的符号 利用继承实现Student类和Teacher类继承自Person类 Student类和Teacher类继承父类的属性和方法 Student类和Teacher类还有自己独有的属性和方法 继承的使用 classStudent Person classTeacher Person 子类继承了父类的成员 子类还可以有自己的成员 Person叫做父类 基类 Student和Teacher叫子类 派生类 Student继承了Person类Person类派生了Teacher类在c 中 所有的类都直接或间接的继承自了object类 当我们定义一个类的时候 如果没有写 继承一个类 那么这个类就继承了object类 练习 写一个Student类和一个Teacher类 他们都有一个打招呼的方法 不同的是Studetn打招呼是说 大家好 我叫XX 我今年XX岁了 我的爱好是XXX Teacher的打招呼的方法是说 大家好 我叫XX 我今年XX岁了 我已经工作XX年了 显示调用父类的构造方法 实例化子类时是否调用了父类的构造方法 顺序如何 利用构造方法设置公共属性 也就是说若父类的构造方法有参数 应该如何处理呢 显示调用父类的构造方法 关键字 base protected protected访问修饰符不允许其他非子类访问修改刚刚的练习 父类中把访问修饰符改成protected子类中还能被调用到吗 其他非子类能调用吗 继承的传递性 继承的单根性 类型转换 lsp Personp newTeacher 子类可以隐式的转换成父类 Teachert Teacher p is和astypeAistypeB仅判断typeAasTypeB先判断 再转换 练习 自己定义一个父类Person 两个子类Teacher和Student类 Person写一个有参数的构造方法 自己试试 子类可以自动转父类 父类转子类要通过强转 为了不出错 可以先通过is判断或用as转换 ArrayList和HashTable 为什么要用ArrayList和HashTableArrayList元素的增加 插入 删除 清空 排序 反转 HashTable的增 删 查 判存 foreach 异常与异常处理 传统的错误表示方式 错误码 举例 需要知道不同错误码的含义 如果不处理错误码 则程序可能陷入不可以预置的错误 陈摄影师以为文件已经被删除造成的麻烦 错误码的缺点 不处理则很难发现 每次处理则很麻烦 难以看出错误的原因 容易使得程序进入不确定状态 trycatch Exceptionex异常也是对象 Exception类主要属性 Message StackTrace发生异常后程序默认就退出了 try代码块中的后续代码不会被执行 catch以后的代码则会继续执行 不要吃掉异常 一般情况下不需要处理异常 扔出自己的异常 扔 throw 抓住 catch 索引器 C 中提供了按照索引器进行访问的方法定义索引器的方式 stringthis intindex get return set string为索引器的类型 中是参数列表 进行索引器写操作就是调用set代码块 在set内部使用value得到用户设置的值 进行读操作就执行get代码块 索引器参数可以不止一个 类型也不限于int 几乎可以是任意类型 练习1 定义一个集合类 学生类 不仅可以通过下标查找学生 还可以通过姓名查找 设姓名没有重复 练习2 上面的火星文的例子 不要用Dictionary 用自己写的一个Dictionary测试 通过Stopwatch查看效率 静态方法和实例方法 定义和调用 WinForm编程基础 讲师 刘德福 Winform基础 创建Winform应用程序 观察窗体生成和文件和代码工具箱 添加控件复制对齐属性 以窗体或Button为例 如何更改属性常用属性 name VisibaleEnabledLocationSizeText等事件 当事件发生的时候 net框架会帮助我们执行一个方法 叫事件处理方法 具体为什么会执行这个方法 net高级中会讲 属性也可以通过代码来赋值 MessageBox类 控件介绍 Label 用于向用户展示信息LinkLabel 链接TextBox 一般用于接收用户的输入PictureBox 显示图片 简单的WinForm程序 练习1 矩形输入宽和高 输出面积 练习2 简单的加法计算器 用户在文本框1 2中输入两个数 点击按钮 在文本框3中显示两个数的和 如果1或者2为错误的数据格式 则弹出对话框提示错误 练习3 用户在文本框1 2中输入两个数 点击按钮 在文本框3中显示从文本框1中的数字到文本框2中数字之间的累加和 如果1或者2为错误的数据格式 则弹出对话框提示错误 如果文本框1中的数字比文本框2中数字大 则提示错误 练习4 页面上有一张图片 PictureBox 在Image属性中加载图片 默认是隐藏的 Visible False 用户在文本框中输入身份证号点击按钮 如果年龄大于18岁则显示图片 Visible True 否则提示年龄太小 取当前年份 DateTime Now Year 练习5 页面上有一个文本框 文本框左侧和右侧各有一个按钮 点击左侧按钮文本框中的文字向左循环滚动一次 点击右侧按钮文本框中的文字向右循环滚动一次 ComboBox 下拉列表练习1 简单的四则运算器如何禁止用户编辑 三种风格 响应选择改变事件练习2 省市选择器练习3 日月选择器 假设2月份总是28天 1 3 5 7 8 10 12月份是31天 其他是30天 控件介绍 Timer控件 Timer 每隔一段时间触发一个事件 不可视控件 Inerval Enabled Tick事件 计量单位 ms 毫秒 1秒 1000毫秒DateTime案例 小时钟 取当前时间DateTime Now ToString 案例 窗体标题走马灯 树状结构数据 CheckBox和RadioButtonGroupBoxProgressBar其他 主菜单 工具栏 上下文菜单各种通用对话框托盘 HTML基础 讲师 刘德福 HTML基础知识 HTML HyperTextMarkupLanguage超文本标签语言HTML 网页的 源码 浏览器 解释和执行 HTML源码的工具查看网页 Html基础知识 一个基本的html页面所应该有的元素 我的第一个网页HelloWorld 使用记事本创建网页 使用记事本创建网页的步骤 1 打开记事本2 输入HTML代码3 保存为 html或 htm文件 打开网页预览效果初学者来说用 记事本或editplus网页三剑客 DreamWeaver 设计网页 FireWorks 处理图片 Flash head 标题 页面背景和背景图片 HelloWorld 为了使页面美丽大方 网页背景要尽量地浅 版式相关标签 标题标签h1 h6font标签sizecolorfac

温馨提示

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

评论

0/150

提交评论