收藏 分销(赏)

c#基础知识教材-asp-net经典教材.doc

上传人:快乐****生活 文档编号:1568892 上传时间:2024-05-03 格式:DOC 页数:289 大小:3.76MB 下载积分:20 金币
下载 相关 举报
c#基础知识教材-asp-net经典教材.doc_第1页
第1页 / 共289页
c#基础知识教材-asp-net经典教材.doc_第2页
第2页 / 共289页


点击查看更多>>
资源描述
目 录 第一章:C#语言基础 1.1 C#语言特点 11 1.2 编写控制台应用程序 12 1.2.1 使用SDK命令行工具编写控制台程序 12 1.2.1 使用Visual Studio.Net建立控制台程序 13 1.3 类的基本概念 16 1.3.1 类的基本概念 16 1.3.2 类成员的存取控制 16 1.3.3 类的对象 17 1.3.4 类的构造函数和析构函数 17 1.3.5 类的构造函数的重载 17 1.3.6 使用Person类的完整的例子 18 1.4 C#的数据类型 19 1.4.1 值类型和引用类型区别 19 1.4.2 值类型变量分类 20 1.4.3 结构类型 20 1.4.4 简单类型 21 1.4.5 枚举类型 21 1.4.6 值类型的初值和默认构造函数 22 1.4.7 引用类型分类 22 1.4.8 对象类(object类) 22 1.4.9 数组类 23 1.4.10 字符串类(string类) 24 1.4.11 类型转换 25 1.5 运算符 26 1.5.1 运算符分类 27 1.5.2 测试运算符is 27 1.5.3 typeof运算符 28 1.5.4 溢出检查操作符checked和unchecked 28 1.5.5 new运算符 29 1.5.6 运算符的优先级 29 1.6 程序控制语句 29 1.6.1 和C语言的不同点 29 1.6.2 foreach语句 30 1.6.3 异常语句 31 1.7 类的继承 32 1.7.1 派生类的声明格式 32 1.7.2 base 关键字 33 1.7.3 覆盖基类成员 33 1.7.4 C#语言类继承特点 33 1.8 类的成员 34 1.8.1 类的成员类型 34 1.8.2 类成员访问修饰符 34 1.9 类的字段和属性 34 1.9.1 静态字段、实例字段、常量和只读字段 35 1.9.2 属性 35 1.10 类的方法 36 1.10.1 方法的声明 37 1.10.2 方法参数的种类 37 1.10.3 静态方法和实例方法 39 1.10.4 方法的重载 40 1.10.5 操作符重载 41 1.10.6 this关键字 41 1.11 类的多态性 42 1.12 抽象类和抽象方法 44 1.13 密封类和密封方法 45 1.14 接口 45 1.14.1 接口声明 46 1.14.2 接口的继承 46 1.14.3 类对接口的实现 47 1.15 代表 48 1.16 事件 49 1.16.1 事件驱动 49 1.16.2 事件的声明 49 1.16.3 事件的预订和撤消 50 1.17 索引指示器 50 1.18 名字空间 51 1.18.1 名字空间的声明 51 1.18.2 名字空间使用 52 1.19 非安全代码 52 习题 53 第一章 Windows编程的基础知识 54 2.1 窗口 54 2.2 Windows的消息系统 54 2.2.1 消息驱动(事件驱动) 54 2.2.2 事件队列 54 2.2.3 注视窗口 54 2.3 Windows编程接口和类库 55 2.3.1 Windows编程接口(API) 55 2.3.2 MFC类库 55 2.3.3 组件库 55 2.3.4 .NET框架类库 55 2.4 Windows应用程序的基本结构 56 2.4.1 最简单的Windows应用程序 56 2.4.2 用Visual Studio.Net建立Windows应用程序框架 57 2.4.3 方案(Solution)和项目(Project) 62 习题 63 第二章 常用控件和类的使用 64 3.1 控件通用属性 64 3.2 Form类 64 3.3 标签(Label)控件 65 3.4 按钮(Button)控件 66 3.5 事件处理函数的参数 66 3.6 文本框(TextBox)控件 67 3.7 Convert类 68 3.8 单选按钮(RadioButton)和GroupBox控件 68 3.9 Font类 69 3.10 多选框(CheckBox)控件 69 3.11 列表选择控件(ListBox) 71 3.12 下拉列表组合框(ComboBox)控件 72 3.13 ToolTip控件 72 3.14 超级链接(LinkLable)控件 73 3.15 定时(Timer)控件 73 3.16 DateTime类 74 3.17 菜单 75 3.18 工具条 76 3.19 状态栏(StatusBar)控件 78 3.20 鼠标事件 79 3.21 快捷菜单(ContextMenu) 80 3.22 综合例子:计算器 81 习题: 83 第三章 文本编辑器的实现 85 4.1 用RichTextBox控件实现文本编辑器 85 4.2 实现文本编辑器的剪贴板功能 86 4.3 实现文本编辑器的存取文件功能 86 4.3.1 OpenFileDialog和SaveFileDialog控件 86 4.3.2 存取文件功能的实现 88 4.4 修改字体属性 89 4.4.1 FontDialog控件属性和方法 89 4.4.2 修改字体属性的实现方法 89 4.5 实现About对话框 90 4.6 实现文本编辑器查找替换功能 91 4.6.1 模式对话框和非模式对话框 91 4.6.2 写字板查找替换功能的实现 92 4.7 提示用户保存修改的文件 94 4.7.1 对话框MessageBox 94 4.7.2 提示用户保存修改的文件的实现 94 4.8 打印和打印预览 96 4.8.1 PrintDocument类 96 4.8.2 打印设置对话框控件PageSetupDialog 98 4.8.3 打印预览 99 4.8.4 用打印对话框PrintDialog实现打印 100 4.9 编写多文档界面应用程序 100 4.9.1 建立类似Microsoft Word的编辑器 101 4.9.2 主窗口和子窗口的菜单的融合 102 4.9.3 建立类似Visualstudio.Net的编辑器 104 习题 106 第四章 图形图像编程 108 5.1 图形设备环境接口(GDI) 108 5.2 Graphics类 108 5.2.1 使用Graphics类绘图的基本步骤 109 5.2.2 窗体的Paint事件 109 5.3 GDI+中三种坐标系统: 109 5.4 GDI+中常用的结构 110 5.4.1 结构Point和PointF 110 5.4.2 结构Size和SizeF 110 5.4.3 结构Rectangle和RectangleF 110 5.4.4 结构Color 110 5.5 画笔 111 5.6 创建画刷 112 5.6.1 单色画刷SolidBrush 112 5.6.2 阴影画刷HatchBrush 112 5.6.3 纹理(图像)画刷TextureBrush 113 5.6.4 颜色渐变画刷LinearGradientBrush 114 5.6.5 画刷PathGradientBrush 115 5.7 基本图形的绘制和填充 116 5.7.1 绘制线段 116 5.7.2 ArrayList类 118 5.7.3 画椭圆(圆)及键盘消息的使用 119 5.7.4 画矩形 120 5.7.5 绘制圆弧 121 5.7.6 DrawPie方法 121 5.7.7 Bezier曲线 121 5.7.8 DrawPolygon方法 122 5.7.9 DrawClosedCurve方法 122 5.7.10 DrawCurve方法 123 5.7.11 DrawPath方法和GraphicsPath类 123 5.7.12 DrawString方法 124 5.7.13 DrawImage和DrawIcon方法 124 5.7.14 FillEllipse方法 125 5.7.15 FillRectangle方法 126 5.7.16 FillPie方法 126 5.7.17 FillRegion方法和Region类 126 5.8 Matrix类和图形的平移、变形、旋转 128 5.8.1 Matrix类 128 5.8.2 图形的平移、变形、旋转 128 5.8.3 仿射矩阵 129 5.9 图形文件格式 130 5.10 图形框PictureBox控件 131 5.11 Bitmap类 132 5.11.1 Bitmap类支持的图像类型 132 5.11.2 Bitmap类的方法 132 5.11.3 画点 132 5.11.4 在PictureBox中画任意曲线 133 5.11.5 存取位图文件 134 5.11.6 用拖动鼠标方法画椭圆或圆 134 5.12 图像剪贴板功能 136 5.12.1 剪贴区域选定 136 5.12.2 剪贴板复制功能的实现 136 5.12.3 剪贴板剪贴功能的实现 137 5.12.4 剪贴板粘贴功能的实现 137 5.13 图像的处理 139 5.13.1 图像的分辨力 139 5.13.2 彩色图像变换为灰度图像 140 5.13.3 灰度图像处理 140 5.13.4 动画 141 习题 142 第五章 文件和流 143 6.1 用流读写文件 143 6.1.1 用FileStream类读写字节 143 6.1.2 用BinaryReader和BinaryWriter类读写基本数据类型 143 6.1.3 用StreamReader和StreamWriter类读写字符串 144 6.2 File类和FileInfo类 144 6.2.1 File类常用的方法 144 6.2.2 文件打开方法:File.Open 145 6.2.3 文件创建方法:File.Create 145 6.2.4 文件删除方法:File.Delete 145 6.2.5 文件复制方法:File.Copy 145 6.2.6 文件移动方法:File.Move 146 6.2.7 设置文件属性方法:File.SetAttributes 146 6.2.8 判断文件是否存在的方法:File.Exist 146 6.2.9 得到文件的属性 146 6.3 Directory类和DirectoryInfo类 146 6.3.1 Directory类常用的方法如下: 147 6.3.2 目录创建方法:Directory.CreateDirectory 147 6.3.3 目录属性设置方法:DirectoryInfo.Atttributes 147 6.3.4 目录删除方法:Directory.Delete 147 6.3.5 目录移动方法:Directory.Move 148 6.3.6 获取当前目录下所有子目录:Directory.GetDirectories 148 6.3.7 获取当前目录下的所有文件方法:Directory.GetFiles 148 6.3.8 判断目录是否存在方法:Directory.Exist 148 6.4 例子:查找文件 149 6.4.1 Panel和ListView控件 149 6.4.2 在指定文件夹中查找文件 149 6.5 例子:拆分和合并文件 150 习题: 151 第六章 多线程程序设计 152 7.1 线程类(Thread)的属性和方法 152 7.2 线程的创建 153 7.3 建立线程类 154 7.3.1 进度条(ProgressBar)控件 154 7.3.2 用线程控制进度条 154 7.4 线程的优先级 155 7.5 多个线程互斥 156 7.5.1 多个线程同时修改共享数据可能发生错误 156 7.5.2 用LOCK语句实现互斥 157 7.5.3 用Mutex类实现互斥 157 7.5.4 用Monitor类实现互斥 157 7.6 Monitor类 157 7.7 线程的同步:生产者和消费者关系 157 7.7.1 生产者线程和消费者线程不同步可能发生错误 157 7.7.2 生产者线程和消费者线程同步的实现 158 习题: 159 第七章 ADO.NET与数据操作 160 8.1 数据库基本概念 160 8.2 设计连接和不连接数据库应用程序的基本步骤: 160 8.3 用ACCESS创建数据库 161 8.4 结构化查询语言SQL 163 8.4.1 Select语句 163 8.4.2 Insert语句 163 8.4.3 Delete语句 163 8.4.4 Update语句 164 8.5 用Connection对象连接数据库。 164 8.6 Command对象 164 8.7 DataAdapter对象 165 8.8 DataSet对象 166 8.8.1 使用DataSet的优点 166 8.8.2 数据集DataSet概念 166 8.8.3 使用DataSet对象 167 8.8.4 为DataSet对象中的表指定主键、建立关系 167 8.9 用DataGraid控件显示数据和数据绑定 168 8.10 不连接数据库应用程序的完整的例子 168 8.11 修改数据并保存修改的数据到源数据库 169 8.12 其它数据绑定控件 170 8.13 建立主从关系表 171 第八章 ASP.Net编程基础知识 173 9.1 网络基础 173 9.2.1 局域网、广域网和INTERNET 173 9.2.2 网络传输协议 173 9.2.3 IP地址 173 9.2.4 域名 174 9.2.5 URL 174 9.2.6 端口号 174 9.2.7 HTML,HTTP和网页 175 9.2.8 Web服务器和浏览器工作方式 175 9.2.9 宿主目录、默认主页及网站 175 9.2.10 静态网页 176 9.2.11 客户端动态网页 176 9.2.12 服务器端动态网页 176 9.2.13 修改宿主目录及建立虚拟目录 176 9.2 HTML标记语言 177 9.2.1 HTML标记 178 9.2.2 HTML文件结构 178 9.2.3 语言字符集的信息 179 9.2.4 背景色彩和文字色彩 179 9.2.5 页面空白 180 9.2.6 显示一幅图 180 9.2.7 超级链接 180 9.2.8 超级链接在新窗口打开另一网页 180 9.2.9 标尺线 181 9.2.10 网页中标题的字体 182 9.2.11 网页中正文字体 182 9.2.12 斜体、粗体字符及为字体增加下划线,删除线 183 9.2.13 字体标记的组合使用 183 9.2.14 字体的颜色 184 9.2.15 客户端字体 184 9.2.16 网页中控件的概念 184 9.2.17 窗体控件和其它控件的使用 185 9.2.18 例子:文字输入和密码输入 185 9.2.19 用FontPage做网页的例子,使用复选框和单选按钮 186 9.3 ASP.NET技术基础 187 9.3.1 HTML服务器端控件 187 9.3.2 Web服务器端控件 188 9.3.3 Web Form的事件处理 188 9.3.4 记事本编写ASP.NET动态网页 188 9.3.5 用Visual Studio.NET实现ASP.NET动态网页 189 9.3.6 Code Behind技术 190 9.3.7 ASP.NET和HTML兼容 192 9.3.8 网页中使用C#语句 192 第九章 Web服务器端控件 194 10.1 常用的ASP.NET服务器端控件 194 10.1.1 Label控件 194 10.1.2 TextBox控件 194 10.1.3 Button、LinkButton和ImageButton控件 195 10.1.4 CheckBox和CheckBoxList控件 195 10.1.5 RadioButton和RadioButtonList控件 195 10.1.6 Image控件 196 10.1.7 HyperLink控件 197 10.1.8 Table、TableCell和TableRow控件 197 10.1.9 DrowDownList控件 197 10.2 ASP.Net控件数据绑定 198 10.2.1 数据绑定基础 198 10.2.2 基于变量的数据绑定 199 10.2.3 基于集合的绑定 200 10.2.4 基于表达式绑定 204 10.2.5 基于DataBinder.Eval方法的数据绑定 205 10.2.6 列表绑定控件 206 10.3 数据验证控件 215 10.3.1 数据验证概述 215 10.3.2 常用的验证控件 216 10.3.3 验证控件常用的属性 216 10.3.4 RequiredFieldValidator 216 10.3.5 自定义数据验证控件CustomValidator控件 217 10.3.6 ValidationSummary控件 219 10.3.7 CompareValidator控件 220 10.3.8 RegularExpressionValidator 控件 222 10.4 DataGraid控件 225 10.4.1 DataGrid控件概述 225 10.4.2 DataGrid控件绑定数据库表 225 10.4.3 DataGrid控件对数据库记录分页显示 226 10.4.4 DataGrid控件对记录排序 228 10.4.5 用BoundColumn列将标题改为中文 231 10.4.6 增加按钮列 232 10.4.7 增加HyperLinkColumn列 234 10.4.8 增加EditCommandColumn列 237 10.4.9 控件TemplateColumn的用法 237 10.5 AdRotator控件 241 10.6 Calender控件 242 10.7 Visual Studio.Net实现留言板 245 第十章 ASP.NET内建对象 248 11.1 Request对象 248 11.1.1 用Request对象获取另一个网页传递的数据 248 11.1.2 用Request对象获取客户端浏览器的信息 249 11.1.3 用Request对象获取服务器信息 250 11.2 Response对象 250 11.2.1 用Response对象发送信息在浏览器中显示 250 11.2.2 用Response对象重定向浏览器 251 11.3 Cookie对象 252 11.3.1 用Cookie对象记录访问的次数 252 11.3.2 网上商店购物筐实现 253 11.4 Application对象 256 11.4.1 Application对象属性 256 11.4.2 方法 256 11.4.3 事件 257 11.4.4 例子:显示访问网站总人数 257 11.5 Session对象 259 11.5.1 属性 259 11.5.2 方法 260 11.5.3 事件 260 11.5.4 用Session对象实现网上商店购物筐 261 11.6 Server 对象 263 11.6.1 属性MachineName和ScriptTimeout 263 11.6.2 HtmlEncode方法 264 11.6.3 URLEncode方法 264 11.6.4 MapPath方法 264 习题 264 第十一章 可扩展标记语言 265 12.1 HTML及其缺点 265 12.2 SGML(标准通用置标语言) 265 12.3 XML(可扩展置标语言) 265 12.4 XML的文档格式 266 12.5 用XSL文件显示XML文档 267 12.6 .NET对XML的支持 271 12.7 ADO.NET和XML 274 12.8 使用Visual Studio.Net建立和显示XML文档 277 第十二章 Web服务 279 13.1 Web服务的概念和用途 279 13.2 建立Web服务 280 13.2.1 用记事本建立Web服务 280 13.2.2 用Visual Studio.Net建立Web服务 281 13.2.3 服务描述语言(WSDL) 283 13.3 基于.Net的Web服务客户端程序 283 13.3.1 Web服务客户端程序代理类 284 13.3.2 HTTP-GET、HTTP-POST和SOAP协议 284 13.3.3 使用代理类的Web服务客户端程序 284 13.3.4 Visual Studio.Net建立Web服务客户端程序 285 13.4 建立Web服务客户端程序一般方法 286 13.5 发布和发现Web服务 287 13.5.1 Web服务目录 287 13.5.2 Web服务发现 287 C#语言基础 本章介绍C#语言的基础知识,希望具有C语言的读者能够基本掌握C#语言,并以此为基础,能够进一步学习用C#语言编写window应用程序和Web应用程序。当然仅靠一章的内容就完全掌握C#语言是不可能的,如需进一步学习C#语言,还需要认真阅读有关C#语言的专著。 1.1 C#语言特点 Microsoft.NET(以下简称.NET)框架是微软提出的新一代Web软件开发模型,C#语言是.NET框架中新一代的开发工具。C#语言是一种现代、面向对象的语言,它简化了C++语言在类、命名空间、方法重载和异常处理等方面的操作,它摒弃了C++的复杂性,更易使用,更少出错。它使用组件编程,和VB一样容易使用。C#语法和C++和JAVA语法非常相似,如果读者用过C++和JAVA,学习C#语言应是比较轻松的。 用C#语言编写的源程序,必须用C#语言编译器将C#源程序编译为中间语言(MicroSoft Intermediate Language,MSIL)代码,形成扩展名为exe或dll文件。中间语言代码不是CPU可执行的机器码,在程序运行时,必须由通用语言运行环境(Common Language Runtime,CLR)中的既时编译器(JUST IN Time,JIT)将中间语言代码翻译为CPU可执行的机器码,由CPU执行。CLR为C#语言中间语言代码运行提供了一种运行时环境,C#语言的CLR和JAVA语言的虚拟机类似。这种执行方法使运行速度变慢,但带来其它一些好处,主要有: l 通用语言规范(Common Language Specification,CLS):.NET系统包括如下语言:C#、C++、VB、J#,他们都遵守通用语言规范。任何遵守通用语言规范的语言源程序,都可编译为相同的中间语言代码,由CLR负责执行。只要为其它操作系统编制相应的CLR,中间语言代码也可在其它系统中运行。 l 自动内存管理:CLR内建垃圾收集器,当变量实例的生命周期结束时,垃圾收集器负责收回不被使用的实例占用的内存空间。不必象C和C++语言,用语句在堆中建立的实例,必须用语句释放实例占用的内存空间。也就是说,CLR具有自动内存管理功能。 l 交叉语言处理:由于任何遵守通用语言规范的语言源程序,都可编译为相同的中间语言代码,不同语言设计的组件,可以互相通用,可以从其它语言定义的类派生出本语言的新类。由于中间语言代码由CLR负责执行,因此异常处理方法是一致的,这在调试一种语言调用另一种语言的子程序时,显得特别方便。 l 增加安全:C#语言不支持指针,一切对内存的访问都必须通过对象的引用变量来实现,只允许访问内存中允许访问的部分,这就防止病毒程序使用非法指针访问私有成员。也避免指针的误操作产生的错误。CLR执行中间语言代码前,要对中间语言代码的安全性,完整性进行验证,防止病毒对中间语言代码的修改。 l 版本支持:系统中的组件或动态联接库可能要升级,由于这些组件或动态联接库都要在注册表中注册,由此可能带来一系列问题,例如,安装新程序时自动安装新组件替换旧组件,有可能使某些必须使用旧组件才可以运行的程序,使用新组件运行不了。在.NET中这些组件或动态联接库不必在注册表中注册,每个程序都可以使用自带的组件或动态联接库,只要把这些组件或动态联接库放到运行程序所在文件夹的子文件夹bin中,运行程序就自动使用在bin文件夹中的组件或动态联接库。由于不需要在注册表中注册,软件的安装也变得容易了,一般将运行程序及库文件拷贝到指定文件夹中就可以了。 l 完全面向对象:不象C++语言,即支持面向过程程序设计,又支持面向对象程序设计,C#语言是完全面向对象的,在C#中不再存在全局函数、全区变量,所有的函数、变量和常量都必须定义在类中,避免了命名冲突。C#语言不支持多重继承。 1.2 编写控制台应用程序 1.2.1 使用SDK命令行工具编写控制台程序 第一个程序总是非常简单的,程序首先让用户通过键盘输入自己的名字,然后程序在屏幕上打印一条欢迎信息。程序的代码是这样的: using System;//导入命名空间。//为C#语言新增解释方法,解释到本行结束 class Welcome//类定义,类的概念见下一节 { /*解释开始,和C语言解释用法相同 解释结束*/ static void Main()//主程序,程序入口函数,必须在一个类中定义 { Console.WriteLine("请键入你的姓名:");//控制台输出字符串 Console.ReadLine();//从键盘读入数据,输入回车结束 Console.WriteLine("欢迎!"); } } 可以用任意一种文本编辑软件完成上述代码的编写,然后把文件存盘,假设文件名叫做welcome.cs,C#源文件是以cs作为文件的扩展名。和C语言相同,C#语言是区分大小写的。高级语言总是依赖于许多在程序外部预定义的变量和函数。在C或C++中这些定义一般放到头文件中,用#include语句来导入这个头文件。而在C#语言中使用using语句导入名字空间,using System语句意义是导入System名字空间,C#中的using语句的用途与C++中#include语句的用途基本类似,用于导入预定义的变量和函数,这样在自己的程序中就可以自由地使用这些变量和函数。如果没有导入名字空间的话我们该怎么办呢?程序还能保持正确吗?答案是肯定的,那样的话我们就必须把代码改写成下面的样子: class Welcome { static void Main() { System.Console.WriteLine("请键入你的姓名:"); System.Console.ReadLine(); System.Console.WriteLine("欢迎!"); } } 也就是在每个Console前加上一个前缀System.,这个小原点表示Console是作为System的成员而存在的。C#中抛弃了C和C++中繁杂且极易出错的操作符象::和->等,C#中的复合名字一律通过.来连接。System是.Net平台框架提供的最基本的名字空间之一,有关名字空间的详细使用方法将在以后详细介绍,这里只要学会怎样导入名字空间就足够了。 程序的第二行class Welcome声明了一个类,类的名字叫做Welcome。C#程序中每个变量或函数都必须属于一个类,包括主函数Main(),不能象C或C++那样建立全局变量。C#语言程序总是从Main()方法开始执行,一个程序中不允许出现两个或两个以上的Main()方法。请牢记C#中Main()方法必须被包含在一个类中,Main第一个字母必须大写,必须是一个静态方法,也就是Main()方法必须使用static修饰。static void Main()是类Welcome中定义的主函数。静态方法意义见以后章节。 程序所完成的输入输出功能是通过Console类来完成的,Console是在名字空间System中已经定义好的一个类。Console类有两个最基本的方法WriteLine和ReadLine。ReadLine表示从输入设备输入数据,WriteLine则用于在输出设备上输出数据。 如果在电脑上安装了Visual Studio.Net,则可以在集成开发环境中直接选择快捷键或菜单命令编译并执行源文件。如果您不具备这个条件,那么至少需要安装Microsoft.Net Framework SDK,这样才能够运行C#语言程序。Microsoft.Net Framework SDK中内置了C#的编译器csc.exe,下面让我们使用这个微软提供的命令行编译器对程序welcome.cs进行编译。假设已经将welcome.cs文件保存在d:\Charp目录下,启动命令行提示符,在屏幕上输入一行命令:d:回车,cd Charp回车,键入命令: C:\WINNT\Microsoft.NET\Framework\v1.0.3705\csc welcome.cs 如果一切正常welcome.cs文件将被编译,编译后生成可执行文件Welcome.exe。可以在命令提示符窗口运行可执行文件Welcome.exe,屏幕上出现一行字符提示您输入姓名:请键入你的姓名:输入任意字符并按下回车键,屏幕将打印出欢迎信息:欢迎! 注意,和我们使用过的绝大多数编译器不同,在C#中编译器只执行编译这个过程,而在C和C++中要经过编译和链接两个阶段。换而言之C#源文件并不被编译为目标文件.obj,而是直接生成可执行文件.exe或动态链接库.dll,C#编译器中不需要包含链接器。 1.2.1 使用Visual Studio.Net建立控制台程序 (1) 运行Visual Studio.Net程序,出现如图1.2.2A界面。 (2) 单击新建项目按钮,出现如图1.2.2B对话框。在项目类型(P)编辑框中选择Visual C#项目,在模板(T)编辑框中选择控制台应用程序,在名称(N)编辑框中键入e1,在位置(L)编辑框中键入D:\csarp,必须预先创建文件夹D:\csarp。也可以单击浏览按钮,在打开文件对话框中选择文件夹。单击确定按钮,创建项目。出现如图1.2.2C界面。编写一个应用程序,可能包含多个文件,才能生成可执行文件,所有这些文件的集合叫做一个项目。 (3) 修改class1.cs文件如下,有阴影部分是新增加的语句,其余是集成环境自动生成的。 using System; namespace e1 { /// <summary> /// Class1 的摘要说明。 /// </summary> class Class1 { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main(string[] args) { // // TODO: 在此处添加代码以启动应用程序 // Console.WriteLine("请键入你的姓名:"); Console.ReadLine(); Console.WriteLine("欢迎!"); } } } (4) 按CTRL+F5键,运行程序,如右图,和1.2.1节运行效果相同。屏幕上出现一行字符,提示您输入姓名:请键入你的姓名:输入任意字符并按下回车键,屏幕将打印出欢迎信息:欢迎!输入回车退出程序。 图1.2.2A 图1.2.2B 图1.2.2C 1.3 类的基本概念 C#语言是一种现代、面向对象的语言。面向对象程序设计方法提出了一个全新的概念:类,它的主要思想是将数据(数据成员)及处理这些数据的相应方法(函数成员)封装到类中,类的实例则称为对象。这就是我们常说的封装性。 1.3.1 类的基本概念 类可以认为是对结构的扩充,它和C中的结构最大的不同是:类中不但可以包括数据,还包括处理这些数据的函数。类是对数据和处理数据的方法(函数)的封装。类是对某一类具有相同特性和行为的事物的描述。例如,定义一个描述个人情况的类Person如下: using System; class Person//类的定义,class是保留字,表示定义一个类,Person是类名 { private string name="张三";//类的数据成员声明 private int age=12;//private表示私有数据成员 public void Display()//类的方法(函数)声明,显示姓名和年龄 { Console.WriteLine("姓名:{0},年龄:{1}",name,age); } public void SetName(string PersonName)//修改姓名的方法(函数) { name=PersonName; } public void SetAge(int PersonAge) { age=PersonAge; } } Console.WriteLine("姓名:{0},年龄:{1}",name,age)的意义是将第二个参数变量name变为字符串填到{0}位置,将第三个参数变量age变为字符串填到{1}位置,将第一个参数表示的字符串在显示器上输出。 大家注意,这里我们实际定义了一个新的数据类型,为用户自己定义的数据类型,是对个人的特性和行为的描述,他的类型名为Person,和int,char等一样为一种数据类型。用定义新数据类型Person类的方法把数据和处理数据的函数封装起来。类的声明格式如下: 属性 类修饰符 class 类名{类体} 其中,关键字class、类名和类体是必须的,其它项是可选项。类修饰符包括new、public、protected、internal、private、abstract和sealed,这些类修饰符以后介绍。类体用于定义类的成员。 1.3.2 类成员的存取控制 一般希望类中一些数据不被随意修改,只能按指定方法修改,既隐蔽一些数据。同样一些函数也不希望被其它类程序调用,只能在类内部使用。如何解决这个问题呢?可用访问权限控制字,常用的访问权限控制字如下:private(私有),public(公有)。在数据成员或函数成员前增加访问权限控制字,可以指定该数据成员或函数成员的访问权限。 私有数据成员只能被类内部的函数使用和修改,私有函数成员只能被类内部的其它函数调用。类的公有函数成员可以被类的外部程序调用,类的公有数据成员可以被类的外部程序直接使用修改。公有函数实际是一个类和外部通讯的接口,外部函数通过调用公有函数,按照预先设定好的方法修改类的私有成员。对于上述例子,name和age是私有数据成员,只能通过公有函数SetName()和SetAge()修改,既它们只能按指定方法修改。 这里再一次解释一下封装
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服