




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第 1 章 第一个应用程序 本章我们建立一个 C#应用程序一个控制台应用程序,一个 Windows 应用程序,通过 两个简单的程序编写及运行,对 Microsoft Visual Studio.Net 2005 的编程环境作一个概貌性 的了解,同时认识 C#程序的框架和一些基础知识。 1.1 项目一:第一个控制台应用程序 1.1.1 工作目标 1. 终极目标:完成第一个控制台应用程序。2. 促成目标: 1. 完成控制台应用程序的创建; 2. 完成程序代码的编写和运行调试; 1.1.2 工作任务 工作任务一:创建第一个空控制台应用程序; 工作任务二:编写程序代码、运行调试程序。 1.1.3 工作任务一:创建第一个空控制台应用程序 1 单击“开始”-“程序”-“Microsoft Visual Studio.Net 2005”-“Microsoft Visual Studio.Net 2005”命令出现“起始页” ,如图 1.1 所示。 1 图 1.1 2005 起始页 2 在“最近的项目”中单击“新建项目” ,打开“新建项目”对话框,如图 1.2 所 示。 图 1.2 新建项目对话框 3 在“新建项目”对话框左侧“项目类型”中选择 “Visual C#”下的“Windows” , 然后在右侧“模板”中选择 “空项目” ,如图 1.3 所示。 2 图 1.3 选择空项目界面 4 在“新建项目”对话框的“名称”文本框中有系统默认的名字“Projectx” ,现在在“名 称”文本框中输入“Helloc”作为该项目的名字。 “位置”文本框中也有系统默认的 位置,也改成你要存放项目的位置,可以直接在“位置”文本框中输入位置,也可以 通过单击“浏览(B)”按钮,通过“项目位置”对话框选择位置。提示:“名称” 和“位置”这两个地方虽都有默认的名字,最好还是要改成自己的,特别是位置栏, 系统默认的文件夹是 VS.NET 系统文件夹,文件夹层数多,不好记,创建的文件不好 找,所以最好改成自己定义的文件夹。 5. 然后单击“确定”按钮。系统建立一个空项目“Helloc”,并进入 Visual Studio.Net 系统。如图 1.4 所示。 6. 在右边“解决方案资源管理器”中右击“Helloc”项目,在弹出的快捷菜单中选择“添 加”-“添加新项”命令,出现“添加新项”对话框,如图 1.5 所示。 7. 在“模板”窗口中选择“代码文件”,最后在“名称”文本框中输入“Helloc”(注 意扩展名可省),单击“打开”按钮,系统创建一个空的“Helloc.cs”文件,并在 左边打开,如图 1.6 所示。 图 1.6 创建 “Helloc.cs”文件界面 1.1.4 工作任务二:1. 编写程序代码 (1)在打开的“Hellow.cs”文件中输入下面代码: /引用命名空间 using System; /自定义类 class Helloc /主方法 static void Main() /在控制台上输出“我的第一个应用程序!” Console.WriteLine (我的第一个应用程序!); (2) 单击菜单“调试” -“开始执行(不调试)”命令,也可以按快捷键“Ctrl+F5”。运行 结果如图 1.7 所示。 图 1.7 运行结果 2. 程序解读 1.C#程序的基本框架 所有 C#程序有一个基本框架,所有程序都包括这个框架,它的基本结构如下: using 命名空间 class 类名 static void Main() 方法体 2.命名空间 using System 表示导入命名空间System。高级语言为了提高编程的效率,总是在系统中 加入许多系统预定义的元素,即编写了许多完成常用功能的程序放在系统中,我们编程时 只要把系统中的内容导入即可使用。 在C#中,把系统中包含的内容按功能分成多个部分,每部分放在了一个命名空间中, 需要时用如下形式导入命名空间: using 命名空间 而另一方面,必须得到与之相匹配的动态链接库的支持,即必须首先添加“命名空间” 的引用,否则编译环境就会无法识别。 3定义类 C#的每一个程序包括至少一个自定义类,程序的所有内容都必须属于一个类。类的定 义格式如下: Class Hello 类体 类中的所有代码被包含在一对大括号 中,左右大括号必须全部配套,如果出现大括号 不匹配的现象,那程序就是一个错误的程序。 4Main 方法 C#中必须且只能包含一个 Main 方法,且格式必须如下: static void Main() 方法体 此方法是程序的入口点和出口点,系统从 Main 方法开始执行,Main 方法结束,程序 结束。 5 代码注释 注释是非执行语句,即在程序运行时不执行此类语句,它的作用是对语句或程序段作 说明,帮助理解程序,提高程序的可读性。对现代编程来说,程序的可读性是程序性能的 重要标志之一,所以一定要从开始养成写注释的编程习惯。 注释语句的格式如下: /:/后的为注释内容 /*/:符号内的是注释内容 如:/自定义类 6输出 控制台应用程序通常使用.NET框架的运行时库提供的输入/输出服务。 前面第一个控制 台应用程序所完成的输出功能都是通过System 命名空间中的控制台(Console)类中的 WriteLine方法来完成的。 格式如下: System.Console.WriteLine(输出项); 功能:把输出项在控制台上输出。 如: System.Console.WriteLine(“Hello World!”);/输出字符串 Hello World! System 命名空间中的控制台(Console)类中还有与之对应的输入方法 ReadLine。 7 格式如下: System.Console.ReadLine(); 功能:从键盘上读取一行以回车为结束符的数据,并把读取的数据返回。 由于它要返回一个值,所以通常要把它返回的值存放起来,以备后面使用。如下方式来使 用它。 string str; str=System.Console.ReadLine(); 如果在程序的开头导入了命名空间 System, 则在程序中可直接使用 Console 类的方法, 无需使用完全限定名。例如: Console.WriteLine(“Hello World!”); Str=Console.ReadLine(); 7语句结束符 分号(; )是 C#程序中语句结束符,除控制语句外,每一个都以“;”结束。 8编译并运行程序 从 IDE 编译并运行程序。F5 或 Ctrl+F5 1.2 项目二:第一个 Windows 应用程序 1.2.1 工作目标 1.终极目标:完成第一个 Windows 应用程序。 2.促成目标: 1. 完成 Windows 应用程序的创建; 2. 完成界面及控件属性的设置; 3. 完成程序代码并运行调试。 1.2.2 工作任务 工作任务一:创建第一个空 Windows 应用程序; 工作任务二:设计程序界面及控件属性设置; 工作任务三:编写程序代码、运行调试程序。 1.2.3 工作任务一:创建第一个 Windows 应用程序 1. 单击“开始”-“程序”-“Microsoft Visual Studio.Net 2005”-“Microsoft Visual 8 Studio.Net 2005”命令出现“起始页” ,如图 1.8 所示。 图 1.8 2005 起始页 2. 在“最近的项目”中单击“新建项目” ,打开“新建项目”对话框,如图 1.9 所示。 图 1.9 新建项目对话框 3. 在模板中选择“Windows 应用程序”项,在“名称”文本框中有系统默认的名字 “WindowsApplicationx” ,现在在名称文本框中输入“Hellow”作为该项目的名字。 “位置”文本框中也有系统默认的位置,也改成你要存放项目的位置,可以直接在位 置文本框中输入位置,也可以通过单击“浏览”按钮,通过“项目位置”对话框选 择位置。4. 然后单击 “确定” 按钮。 系统建立一个 Windows 项目 “Hellow”并进入 Visual Studio.Net , 系统。如图 1.10 所示。 图 1.10 新建 Windows 应用程序界面 1.2.4 工作任务二:设计程序界面及控件属性设置 1. 鼠标移到左边(有的在右边) “工具箱”上,出现“工具箱” 窗口。如图 1.11 所示。 10 图 1.11 工具箱界面 2. 单击 “工具箱” 窗口上的 “Windows 窗口” 出现 , “Windows 窗口” 选项卡, “Button” 单击 控件并将其拖到窗体上,窗体出现一个“Button”控件,上面显示“Button1” ,再拖一个 “ textBox ” 控 件 到 窗 体 上 , 摆 放 好 它 的 位 置 。 如 图 1.12 所 示 。 11 图 1.12 窗口设计界面 3. 单击“Button1” (控件的四面八方有小方块) ,单击右下角“属性”窗口,单击属性 按钮,找到“Text”属性,它右边的值为“button1” ,修改值为“确定” 。 按钮上显示的文字为“确定” ;单击“textBox1” (同样它的四面八方有小方块) ,单击 右下角 “属性” 窗口, 单击属性按钮, 找到 (Name) 属性, “ ” 它右边的值为 “textBox1” , 修改值为“Display” 。 1.2.5 工作任务三:编写程序代码、运行调试程序 1. 双击“确定”按钮,打开代码窗口。如图 1.13 所示。 12 图 1.13 打开代码界面。2. 在按钮单击事件方法(button1_Click)中输入代码,如下所示。 private void (object sender, System.EventArgs e) Display.Text = 这是我的第一个Windows应用程序!; 3. 单击工具栏的“启动”按钮,运行程序。结果如图 1.14 所示。 13 图 1.14 启动界面 4. 单击“确定”按钮,结果如图 1.15 所示在文本框中显示“这是我的第一个 Windows 应用程序” 。 图 1.15 运行结果界面 2. 程序解读 1. Windows 应用程序跟控制台应用程序一样,也有前面讲的程序框架,只是为了帮助大 家更好更快地开发程序,系统已把程序框架给搭好了,并且创建了一个供编程人员设 14 计界面的窗体。 添加控件:控件是对象,可以用它显示信息、通过它向系统输入信息或者响应用户的 操作。它们被放在 Form 对象中。各控件具有它自己的一些属性、方法和事件(后面章 节讲解) 。 向窗体上添加控件的方法:在工具箱单击所要添加的控件,把鼠标移到窗体上,按住鼠标左键,画出所需的控 件。 从工具箱拖动控件到窗体上。在工具箱中双击所要添加的控件,即可把控件添加到窗体上。2. 设置控件的属性:在要选择的控件上单击鼠标,此时控件边上出现八个小方块,然后 通过属性窗口设置控件的属性。如图 1.16 所示。 图 1.16 属性设置窗口 如:设置按钮控件的 Text 属性为“确定” 。 设置文本框的(Name)属性为“Display” 。 3. 刚开始编写的 Windows 程序代码都是放在控件的事件方法中。进入控件事件(以按钮 的单击事件)方法编辑窗口的三种方法如下: 双击要编写事件方法的按钮即可。 单击属性窗口中的 按钮,出现事件窗口,查找到事件名双击它。如图 1.17 所 示。 15 图 1.17 事件窗口 如上在事件窗口中找到所需事件名后,在它的右边输入名字,然后双击它。 通过上面三种方法中的任一方法,都能进入事件代码编辑窗口,插入光标就在事件方 法框架中。然后输入完成功能所要执行的代码。 4. Windows 下常用的输出信息的控件文本框。 在 Windows 应用程序中,常用文本框(textBox)控件的 Text 属性来输出信息。 输出信息”在文本框中显示内容”:Display.Text=”在文本框中显示内容”; 5. 编译运行 该程序的运行与控制台运行程序相同。 1.2.6问题探究 Visual Studio.NET 是.NET 平台下最为强大的开发工具,无论是软件服务商,还是企业 应用程序的部署与发布,Visual Studio.NET 都可以提供近乎完美的解决方案。Visual Studio.NET 提供了包括设计、编码、编译调试、数据库联接操作等基本功能和基于开放架 构的服务器组件开发平台、企业开发工具和应用程序重新发布工具以及性能评测报告等高 级功能。 Visual Studio.NET 是唯一一个从一开始就是为 XML Web 服务创建的开发环境。 通过允 许应用程序通过 Internet 沟通和共享数据,XML Web 服务使业务能够从 Internet 转换为用 于集成和传送它们的核心商业价值的真正平台。 Visual Studio.NET 和 XML Web 服务提供简 单、灵活、基于标准的模型,允许开发人员从新的和现有的代码汇编应用程序,而与平台、 编程语言或对象模型无关。 Microsoft Visual C# 2005(读作 C sharp)是一种编程语言,它是为生成在 .NET Framework 上运行的多种应用程序而设计的。C# 简单、功能强大、类型安全,而且是面 16 向对象的。C# 凭借它的许多创新,在保持 C 样式语言的表示形式和优美的同时,实现了 应用程序的快速开发。 Visual Studio 支持 Visual C#,这是通过功能齐全的代码编辑器、项目模板、设计器、 代码向导、功能强大且易于使用的调试器以及其他工具实现的。通过 .NET Framework 类 库,可以访问多种操作系统服务和其他有用的精心设计的类,这些类可显著加快开发周期。 本章带领大家用 C#编程语言设计了两个基本程序,并介绍了 C#的一点基本概念,通过这 两个小程序,大家要重点掌握 C#程序的基本框架,掌握 C#程序的组成,并能够自己设计 简单的 C#程序。 1.2.7项目实践 1 编写一个控制台应用程序,输出字符串“Hello,Word!”。2编写程序,输入自己的姓名“*” ,输出“你好*” 。3编写 Windows 应用程序,界面如图 1.18 所示。 第2章 存款计算机本项目是实现一个存款的相关数据计算,通过该项目的实现,读者将主要学习 C#语法 中的一些基础知识,比如简单数据类型、变量与常量、运算符与表达式等等,为编写比较 复杂的应用项目奠定基础。 2.1 工作目标 终极目标:实现如图 2.1 所示的存款计算器。 存贷款的利息计算有两种方式复利、 单利。 所谓的单利是指每次获利不滚入本金, 计息时仅以原有的本金为基础。而复利则是将获利直接追加到本金,作为下次计息时的新 的本金。 举例来说,假定某存款每年有 10的获利(年利率) ,最初的存款总额为 100 万。当 以单利计算时,每年可获 10 万利息,因此 10 年后可以获得 100 万利息。然而以复利计算 时,虽然年利率仍然是 10,但是每年获得的利息却是不断增加的。仍以上述存款信息为 例,第一年利息为 100 万的 10,即是 10 万,但是第二年却是(10010)10,即是 11 万,如此类推,等到 10 年后,所获的利息近 160 万。 本项目则是按照复利计算的方式,要求编写一个如图 2.1 所示的程序,能依据输入的存款信息 (本金、 年利率与存款年限) 计算出存款到期时所得的利息,及其帐户内金额 (不 考虑利息税情况) 。 图 2.1 项目执行效果图 在图 2.1 中,左半部分为存款情况设置区,当输入预存入的金额后,给定一个具体的 存款时间(以年为单位) ,点击“计算”按钮,则能在右侧显示区中显示出相应的存款期限、存款期初的本金、及其帐户内金额(不考虑利息税影响) 。 2. 促成目标: 1. 完成项目分析与算法流程设计;2. 完成界面设计; 3. 完成代码编撰;4. 4. 系统运行与效果测试。 2.2 工作任务 任务一:项目分析与算法流程设计; 任务二:界面设计; 任务三:代码编制; 任务四:系统运行与效果测试。 2.3 工作任务一:项目分析与算法设计 前文已经明确告知,利息的计算是采用复利计算法,如假定存款本金为 p , 年利率为 i ,则第一年后获利为: P*i 此时不考虑交税得情况下,帐户资金应该为: p+p*i = p*(1+i) 同样,第二年后为 : 2 p(1+i) ; 由此可得 N 年后得帐户资金应为: N p*(1+i) 而此时的资金帐户应该是本金与利息的和,即: N 本金 利息 p*(1+i) 故 : N 利息 p*(1+i) 本金 (2.1) 上式(2.1)中,如年利率、本金、存款期限已知,则存款总收益及其利息总额可求。 综上所述,可以得出如下的算法流程: (1)从用户输入界面中分别提取存款年限、存款本金、年利率; (2)依据公式(2.1)计算利息总额; (3)计算总的帐户金额 ; (4)将所有要求输出的数据拼凑成符合格式要求的字符串,并输出。 2.4 工作任务二:界面设计 工作任务二: (1) 打开 VS2005 开发环境,在“文件”菜单下,进入“新建”菜单的下级子菜单“项 目” ,在弹出的“新建项目”窗口中选择“WIDOWS 应用程序” ,设置相应的项目名称与保存 位置,单击“确定”按钮。如图 2.2 所示。 图 2.2 新建项目 (2)进入“工具箱” ,展开“公共控件”,将“lable”控件拖拽到 Form1 窗口上, 调整好相应位置,在其属性窗口(如图 2.3 所示)中修改其“Text”属性为“最初本金” 。 图 2.3 Label1 属性设置窗口 (3)进入“工具箱” ,展开“公共控件”,将“textBox 控件拖拽到” Form1 窗口上, 调整好相应位置,在其属性窗口修改其“Name”属性为“corpus_textBox” 。 (4)同上操作,依次拖拽一个 label、textBox、listBox 和两个 button 到 Form1 窗 口,调整好相应位置后,依表 2.1 修改相关属性。 表 2.1 相关控件属性设置 控件名称 label1 label2 Label3 Form1 textBox1 textBox2 textBox3 button1 button1 属性 Text Text Text Text Name Name Name Text Text Name listBox1 s Item 最初本金 存期(年) 年利率()存款计算器 corpus_textBox years_textBox interest_textBox 计算 退出 result_listBox 存期 本金 利息 总金额 修改值 2.5 工作任务三:代码编写 工作任务三: 2.5.1 知识准备 1、c#中的标识符 通过前章的学习我们知道,在一个程序中可能会用到许多各种各样的对象,为明确区 分,必须给每一对象一个具体的名称,这样的名称就称为标识符。 换言之,标识符就是用户自己定义的一系列字符序列,主要目标是区分各自不同的对 象。 虽然标识符是由用户自己定义的,但是这种定义必须符合一定的规范: (1) 标识符只能由字母、数字、下划线组成,且必须以字母或下划线开头。如标识符 MyButton、 _textBox、 Form1 等均为合法标识符; textBox、 而 1Form 等均为非法标识符。 (2)标识符是用以标识不同对象的,因此用户定义的标识符要有一定的意义,从而提 高程序的可读性与记忆性。 (3)用户定义的标识符不能与 C#语言的关键字同名。所谓关键字(又称保留字)是 指在 C#中已经被系统赋予了一定特殊含义的标识符。C#中有 76 个保留字,其列表如表 2.2 所示。 表 2.2 系统保留字 Abstract As Base Bool break Byte Char If Extern Implicit New Static Readonly True Using Throw Ushort String Chedked Goto Explicit Int Null Stackalloc Public Try While False Return Ref Class Foreach Event Interface Object Sizeof Protected Typeof Void Catch Delegate Unsafe Const For Enum Internal Operator Short Private Unit Virtual Long Struct Finally Continue Float Else Is Out Scaled Params Ulong Case Default This Decimal Fixed Double Lock Override Sbyte Switch Unchecked In Namespace Do (4)C#对标识符的大小写敏感。因此,在标识符的定义与使用中要注意大小写一致。 如 myButton 与 MyButton 为两个不同的标识符。2、简单数据类型 计算机程序的总是以数据处理为己任,而现时世界中的的数据包括文字、数字、货币、 日期、图形、图像、表格等等诸多类型。因此,在进行程序设计过程中,必须明确告知计 算机要处理的是什么数据、采用何种适宜的处理策略等。 在 C#中主要包含两大类数据类型: 值类型和引用类型, 其具体组成与划分结构如图 2.5 所示。 简单类型 值 类型 C# 中 数 据 类 型 结构类型 枚举类型 指针类型 类类型 数组类型 接口类型 委托类型 引用类型 图 2.5 C#中的数据类型 其中,简单数据类型主要包括整型类型、字符类型、实数类型(又称浮点类型) 、小数 类型(又称金融类型) 。 (1)整型与实数(浮点)类型 C#中有两种基本的数值类型:整型,无小数部分;实数(浮点)型,有小数部分。其 中整型类型有 8 种(byte、sbyte、short、ushort、uint、int、long、ulong) ,浮点类型 有两(float、double) 。所有数值类型的区别在于用于存放该种类型的值的存储空间的大 小不同,从而决定了不同数值类型所能表示的值的范围不同。 下表 2.3 就各种数值类型及其所能表示的范围做了总结。其中,有符号类型表示可以 在其中存储正数或负数。 表 2.3 C#中基本数值类型 说明 有符号字节 型 无符号字节 型 短整型 无符号短整 型 整型 无符号整型 长整型 无符号长整 型 单精度浮点 型 数据类型 sbyte 1 占用的字节数 -128127 所能表示的数值范围 byte short ushort int uint long ulong 1 2 2 4 4 8 8 0255 -3276832767 065536 -21474836482147483647 04294967295 -2 2 -1 02 -1 -3.410 -1.510 38 -45 64 63 63 float 4 及 1.510 3.410 308 -45 38 -324 双精度浮点 型 -1.710 -5.0510 double 8 及 5.0510 -324 1.710 308 (2)字符类型 C#提供的字符型数据按照国际标准采用 Unicode 大字符集。每个 Unicode 字符的长度 为 16 位,其类型说明符为 char 。 在 C#中,字符文字用单引号来表达,如mn等。但是必须注意的是,一个数字 、 作为一个字符与作为一个数值是有区别的,例如数字 555 是一个数值,可以参与常规的算 术运算。但是字符串“555”却是由三个字符5来组成。 与其他高级语言类似, C#语言也支持转义字符, 所有的转义字符都用反斜线 () 开头, 其后跟着一个字符来表示特定的转义符。各转义字符及其含义列表如下 2.4 所示。 表 2.4 C#所支持的转义字符列表 转义字符 n b o 含义 回车换行 退格符 空字符 单引号 14 位 Unicode 表示 的字符 转义字符 t r a 含义 TAB 符号 回车符 感叹号 反斜杠 转义字符 v f ” xhhhh 含义 垂直制表符 换页符 双引号 14 位 16 进制 表示的字符 uhhhh 字符类型数据具备如下特征: 每个字符占 2 个字节; 字符型与整型数据间不能自动转换(隐式转换) ,不能直接将整型数据赋值给字符 型变量。 (3)布尔类型 布尔类型用于表示逻辑真和逻辑假,其类型说明符用 bool 来表示,该类型仅有两个 取值: true、false。 布尔类型数据主要用于流程控制中,程序设计人员可以通过对布尔类型数据的设置, 达到控制程序走向的目的。 需注意的是,整型数据不能与布尔类型数据直接转换。例如下面语句: int i = 0; if (i) i=3; 在执行过程中会提示错误,因为 i 是整数数据类型,不能对其做布尔判断。 (4)小数类型(十进制类型) 小数类型又称十进制类型,用 decimal 来表示该类型的类型说明符,其可表示的值的 -28 28 范围为: 1.010 7.910 ,精确度可达 2829 位。 该数据类型为高精度的数据类型,主要用于满足财务与金融计算领域。其可表示范围 比双精度浮点数要小的多,但是精确度相对较高。 在十进制类型数据的后面加上“m” ,表示该数据为小数类型,如 8.8m,否则,该数据 将被认为是浮点数处理。 3、变量与常量 (1) 变量 变量是指用于保存某个特定数据类型的值的存储器单元的名称, 在程序的运行过程中, 该存储单元所存储的数据值可变。 变量在定义时,系统会分配给该变量一个存储空间,而定义或声明变量时所指定的变 量的数据类型则决定了存储空间中的数据的类型及其空间大小。 变量通常用于保存程序运行过程中的输入数据、计算的结果值及其中间数据等。 变量必须先声明(定义) ,之后才能使用。变量的声明主要是告知编译器为该种类型的 数据值保留足够大的存储空间,并给这一空间附了一个名称。后期对该单元内数据的操作, 主要就是通过这个名称的引用来实现的。由于变量的名称属于标识符范畴,因此变量的命 名必须符合标识符命名规范。 变量的声明格式如下: 变量修饰符 类型说明符 变量名 1初值 1,变量名 2初值 2,; 上述格式中, “变量修饰符”是用于描述对变量的访问级别和是否是静态变量等,分别 有 public、private、protected、internal、protected internal 五种类型,其基本含义 与应用说明可参见表 2.5。若缺省该说明,则默认为 private 类型。在实际使用过程中, 上述修饰符能且只能同时使用一个。各修饰符主要的功能在于限制变量的有效作用区域, 因此,不同的修饰符所表示的范围有所区别。上述五种变量修饰符可用于局部变量修饰, 另仍有三种(static、new、readonly)仅用于修饰字段级变量,其相关含义与说明见表 2.6 所示。 表 2.5 变量修饰符及其说明列表 修饰符 Public Internal Protected Protected internal Private 含义说明 变量可以作为所属类型的一个字段,在程序任何地方均可以被访问 变量只能在当前程序中被访问 变量只能在所属的类型中被访问,或者在派生该类型的其他类型中被访问 将 protected 与 internal 共同使用,此时变量只能在当前程序中被访问,或者在派 生当前类型的其他类型中被访问。 变量只能在其所属的类型中被访问 表 2.6 变量修饰符及其说明列表 修饰符 new readonly 含义说明 主要用于从其他类继承而来的类,并隐藏该类中其他字段(相关信息参见第七章) 变量被标记为只读 (初始化后不能修改其值) 只读变量不能作为引用或输出参数传递给方法, 。 但在构造函数中除外。 为静态变量标识,自变量声明开始至包含该声明的程序结束,变量始终有效,程序其他地方 static 可访问。需注意的是,使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成 员,static 修饰符可用于字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、 析构函数或类型。 重要提示: C#将变量区分为字段和局部变量两种情况。其中,声明为类型级的变量看作是字段, 而把在方法中声明的变量看作是局部变量。 “类型说明符”为前文所述的数据类型,如 char、int、double、bool 等。 “变量名 1”为自定义标识符,标识变量的名称(存储单元中的某一空间) ,其命名规 则必须符合标识符规范。 格式中“变量名 i = 初值 i ” 分别取值 1、2、3、)表示在变量 i 声明的 (i 同时,让 i 拥有了具体的数据值(该值在程序设计中可以依据需要改变) 。需要说明的是, 给变量赋初值的做法并非是必须的,变量的赋值动作可以在后面的程序代码中进行。不需 要声明的同时赋初值的变量声明格式如下: 变量修饰符 类型说明符 变量名 1,变量名 2,; 因此不难看出,在同一行中可以同时声明多个相同数据类型的变量,并且,所有变量 在声明过程中允许有或没有初值。然而,其变量修饰符与类型说明符却只能指定一次。 需要注意如下两点: 当同时声明多个相同数据类型的变量时,必须注意在变量与变量之间用逗号分割; 在声明的最后需附加一个分号,用以表明变量声明语句的结束。 如欲声明一个整数类型的变量,可书写如下语句: int j; 在声明的同时赋初值时,可如下所示: int j = 2 ; 多个变量的声明如下所示: int i,j = 8, r;/声明三个整数类型变量,且给变量 j 赋初值为 8 char s;/声明字符变量 s 变量在声明后就可以直接使用,使用过程中,无需考虑变量所存储的数据值。下面的 代码给出了具体的使用示例。 程序首先给出了三个整型变量的定义,并给其中两个赋值,然后用第三个变量接收前 两个变量的加和,最后将所得到的和输出。 using System; using System.Collections.Generic; using System.Text; namespace input_output class Program static void Main(string args) int i, j, r; /定义三个整型变量 i = 2; j = 3; r = i + j; /计算变量i与变量j的和 /输出变量r数据 /给变量赋值 Console.WriteLine(r= + r); Console.Read(); 该段代码运行结果为: r = 5 (2) 常量 与变量相对应,常量是表示在程序运行的过程中,所保存的数值始终保持不变的存储 单元的名称。常量同样也是一个标识符,因此其命名方法也必须符合标识符规范。 变量是在程序运行过程中值是可变化的,而常量却是始终保持一个固定不变的值(常 量声明后不运行修改其值) 。除此外,其他相关声明与使用方法和变量相类似。 常量的声明格式如下: 常量修饰符 const 类型说明符 变量名常量表达式 ; “常量修饰符”雷同与前文所述的“变量修饰符” ,此处不再累述。 如下语句声明了一个常量: const int myConst = 2 ; 下面语句则为错误声明: const int myConst ; 原因是在常量的声明中,缺少指定的具体的数值。 下面的代码实现了将用户输入的整数乘以一个常数(此处为 10) ,并将乘积输出的任 务。 using System; using System.Collections.Generic; using System.Text; namespace input_output class Program static void Main(string args) int i, r; /定义整型变量 const int j = 10 ; /定义整型常量 string data; /定义字符串变量,接收用户输入数据 Console.WriteLine(请输入乘数!); data = Console.ReadLine(); /接收用户输入 i = Int32.Parse(data); /将接收过来的数据转换为整数 r = i * j; /计算变量 i 与变量 j 的乘积 /输出变量 r 数据 Console.WriteLine(计算结果为: r= + r); Console.Read(); 代码执行效果如图 2.6 所示。 图 2.6 变量与常量应用示意执行效果 4、运算符与表达式 C#语言中的表达式类似于数学运算中的表达式,是由运算符、操作数(操作对象)和 标点符号连接而成的式子。 操作数(操作对象)可以是一个变量、常量或一个表达式,运算符则指明了作用于操 作数的操作方式。 依据所作用的操作数的个数,运算符可以分为 3 类: 一元运算符:作用于一个操作数的操作符,又可以分为前缀操作符和后缀操作, 使用时分别放置于操作数的前面和后面。如表达式 x+ 表示将变量 x 值加 1。 二元运算符: 作用于两个操作数的运算符, 使用时放在两个操作数之间。 x+y 表 如 示求变量 x 与 y 的和。 三元运算符:作用于三个操作数的运算符。 c#中仅有一个三元运算符,即条件操 作符“?:,使用时它的两个符号“?”和“: ” ”分别放在第一个与第二个、以及 第二个与第三个操作数之间,其基本语法格式为: condition ? true_value : false_value , 表示含义为, 如果条件成立, 则表达式的值为问号后的 true_value, 否则表达式的值为冒号后的 false_value 。如表达式 j =1?2:3 表示含义如下: 如果 j = 1 ,则表达式的整体返回结果为 2,否则返回值为 3。 (1) 算术运算符 算术运算符主要作用对象是整数与浮点树类型,主要有“+、-、*、/、+、-” , 其基本含义分别为:加、减、乘、除、取模、加 1、减 1。 “+”与“-”运算符即可以放在变量前,也可以放在变量后,但其基本含义与功能 是有所区别的。 算术运算符在实际使用过程中需要注意如下事项: 除法运算中,左右操作数中如果全为整型,则“/”表示整除操作,因此返回结果为 整数;否则,返回结果为小数。 下面代码分别执行了四次除法操作,即整数与整数、整数与小数、小数与小数的组合 整除方式。 using System; using System.Collections.Generic; using System.Text; namespace input_output class Program static void Main(string args) int i; double d ; i = 3 / 5; Console.WriteLine(3/5 = + i); d = 3 / 5.4; Console.WriteLine(3/5.6 = 0:f2 , d); d = 3.6 / 5; Console.WriteLine(3.6/5 = 0:f2 ,d); d = 3.6 / 5.6; Console.WriteLine(3.6/5.6 = 0:f2 , d); Console.Read(); 程序运行输出如图 2.7 所示。 图 2.7 整除运算示意代码执行效果 模操作过程中,左右操作数可以为浮点数或整型数据。如 8 % 5 = 3;37.2 % 10 = 7.2 。 一元运算符中的增量与减量运算符的位置不同,参与计算的实际值的含义不同。如 x+ 表示先取 x 进行计算,然后将 x 增量;而 +x 相反。 下面代码给出了增量运算符的应用方法。程序首先将变量赋初始值,然后进行自加运 算,再将运算前后的数据值进行比较输出。 using System; using System.Collections.Generic; using System.Text; namespace input_output class Program static void Main(string args) int i=1 , j = 0; Console.WriteLine(i 初始值为: + i); Console.WriteLine(j 初始值为: + j); j = i+; Console.WriteLine(执行 j=i+ ); Console.WriteLine(i 值为: + i); Console.WriteLine(j 值为: + j); i = 1; j = 0; j = +i; Console.WriteLine(执行 j=+i ); Console.WriteLine(i 值为: + i); Console.WriteLine(j 值为: + j); Console.Read(); 对于同样的 i 与 j 值而言,当执行语句 j = i+ 时,系统首先取 i 的值赋给变量 j, 然后将变量 i 值加 1;而执行语句 j = +i 时,系统首先将变量 i 值加 1,然后把新的 i 值赋给变量 j。其代码执行效果如图 2.8 所示。 图 2.8 增量运算符应用示意代码执行效果 (2) 关系运算符 关系运算符主要用于对两个数据做比较,其运算的结果为布尔类型的数据值(true 或 false) 。其运算符符号主要包含“、=、 45 ” 的最终结果为 true; 而 “ 34 0 ? a : -a; 表示的是将数据 a 的绝对值赋值给 x。 又如: X = ab ? a : b; 表示的是将 a 与 b 中较大的值赋值给 x。 (5)移位运算符 移位运算符主要有“、 Data1 data2 将操作数 data1 按为右移(二进制)data2 位。右移时,右 侧数据移出,左侧数据以 0 补充 将操作数 data1 按为左移(二进制)data2 位。左移时,左 侧数据移出,右侧数据以 0 补充 3 1 Data1 data2 3 1 (6)赋值运算符 赋值运算符主要为“=”运算符,其一般格式为: A = B ; 表示将 B 的值赋值给 A,使得 A 与 B 具有相同的值。 如语句: int i =9 , j; j = i; 分别进行了变量的定义,并指定变量 i 具有初始值为 9,然后将 i 的值赋值给变量 j, 使得 j 的值也为 9。 需要说明的是,赋值运算符有种扩展模式(参见表 2.7 中的赋值运算符一行) ,可以和 位运算符或算术运算符同时结合在一起使用,其一般格式如下: op1 其他运算符 op2 ; 表示的含义是,先将操作数 op1 与 op2 做“其他运算符”运算,并将运算的结果赋值 给操作说 op1。 如语句 : int i=3 , j=5; i *= j; Console.Write
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年工业废气深度净化技术在环保产业环境保护与生态修复中的应用与效果报告
- 2025年绿色建材行业绿色环保产业发展前景研究报告
- 2025年教育精准扶贫项目学生学业成长路径优化策略实施评估报告
- 中小学教师职业道德规范心得体会选集(30篇)
- 中班教案《我有小手》反思
- 浙江省杭州市2025-2026学年八年级语文上学期第一次月考复习试卷(含答案)
- 船运公司合同付款管理办法
- 图文制作服务框架合作协议模板
- 四年级安全教育教学计划
- 3D打印行业市场前景及投资研究报告:应用奇点
- 轨道电路知识课件
- 2026届安徽省淮南市中考试题猜想语文试卷含解析
- 萨克斯课件教学课件
- GPR39mRNA在糖尿病大鼠组织中的表达特征及关联机制研究
- 网络安全知识竞赛试题库及答案
- 小学教师课堂常规培训
- 钻石画教学课件
- 中学生健康卫生课件
- 2025年行政执法人员取得行政执法证件考试题库附答案
- DB6501∕T 035-2022 乌鲁木齐市海绵城市建设标准图集
- 颌下淋巴结肿大的护理
评论
0/150
提交评论