ImageVerifierCode 换一换
格式:DOC , 页数:34 ,大小:2.55MB ,
资源ID:2723559      下载积分:20 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-2723559.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Visual C_2008程序设计与应用教程 - C_基本语法.doc)为本站会员(dreamzhangning)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

Visual C_2008程序设计与应用教程 - C_基本语法.doc

1、 第 2 章C#基本语法 C#标识符和关键字。 C#数据类型。 C#变量的命名、声明、类型。 C#各种运算符以及表达式。 学会正确使用 C#标识符和关键字,掌握 标识符的命名规则。 正确使用 C#数据类型,掌握各种数据类型的特性。 理解 C#各种运算符的意义并会运用。 能 正 确 书 写 变 量 的 声 明 定 义 以 及 表 达 式 ,并 充 分 理 解 语 句的含义。24Visual C# 2008 程序设计与应 用教程2.1 工作场景导入【工作场景】已知某公园的形状大致是一个三角形,经实际估算三条边的长度大约分别是 1000 米、800 米和 500 米,试估算三角形公园的面积。工作场景

2、示例如图 2.1 所示。图 2.1 工作场景示例图【引导问题】根据工作场景中提供的三条边的长度,结合数学运算规则,很容易求出三角形公园的面积。如何通过 C#语言编写程序让计算机来完成这个计算呢?用一种语言编写程序实际上是将解决问题思考的过程通过这种语言的形式描述出来。为此我们引导出如下问题。 (1) C#语言是如何书写的?是否有一定的书写规则?(2) 在实际的数学计算中,通常要定义一些未知数,那么在 C#语言中又是如何定义这些未知数的?也就是变量的表示形式是什么?(3) 数学计算过程中通常会遇到各种各样的数据类型,如整数、小数。在 C#语言中又有怎样的数据类型? (4) 数学计算过程中通常会利

3、用数学公式来求解,那么又有怎样的“数学公式”在 C#中被称为表达式?C#中运算符有哪些?如何结合变量书写表达式?2.2 标识符与关键字1. 标识符标 识 符 就 是 一 种 命 名 记 号 , 为 了 能 分 清 程 序 中 的 各 个 元 素 , 程 序 员 往 往 需 要 对 一 些 元素 进 行 命 名 。 对 程 序 中 的 各 个 元 素 进 行 命 名 时 不 是 简 单 随 便 地 命 名 , C#语 言 规 定 对 元 素 进行 命 名 必 须 遵 照 一 定 的 规 则 。 举 个 例 子 : 每 个 人 都 有 自 己 的 名 字 , 这 样 每 个 人 都 有 一 个 标

4、识 , 当 然 在 一 般 情 况 下 , 父 母 在 给 我 们 取 名 字 的 时 候 也 是 按 照 一 定 规 则 的 , 比 如 说 张 三 这个 名 字 , 名 字 的 第 一 个 字 “张 ”跟 父 亲 或 者 母 亲 名 字 的 第 一 个 字 必 须 是 一 样 的 。简单地说,标识符就是程序员对程序中的各个元素加以命名时使用的命名记号,其中有变量名、类名、方法名。25第 2 章 C#基本语法2. 标识符的命名规则C#语言中,标识符是以字母、下划线(_)或 开始的一个字符序列,后面可以跟字母、下划线、数字,另外 C#语言区分大小写。若在程序中定义了不符合一定规则的变量,系统会

5、自动报错。正确的命名:txt_Num,_Num,ab8错误的命名:123abc,typename 表示变量的类型,关于变量的类型将在下一小节中详细讲解。variablename表示变量名,其根据 2.3.1 节中讲解的命名规则进行命名。声明完一个变量,后面要加“;”,切记“; ”必须是语言栏输入在半角英文状态下。例如,下面的语句声明了一个整型变量 myname。int myname;也可以在一个语句中声明多个变量,但是这些变量的类型必须是同一种类型。例如,下面的语句声明了三个整型变量,分别为 count、number、name。int count,number,name;在同一个语句中声明变量

6、是可以的,但是为了程序清晰,往往还是分别对各个变量进行声明,如:28Visual C# 2008 程序设计与应 用教程int count;int number;int name;一旦声明了变量,就可以对变量进行赋值操作。可以在声明变量的同时对该变量进行初始化。所谓初始化就是对变量进行赋值,程序中的变量有了值以后才具有意义,否则只是对变量进行声明而不赋值,在对变量进行操作是没有意义的,甚至还会导致程序出错。2. 对变量进行赋值赋 值 的 语 句 很 简 单 , 形 式 如 下 :variablename = value;例如:count = 3;注意: 这里的“ =”称 为赋值号, count

7、= 3;表示将值 3 赋给变量 count,数学当中也有“=”,称为等号,两者不可混淆。 切记对变 量 进行赋值前要先声明变量,即:int count; / 注意语句后面加“;”count = 3; 在对变量赋值时,赋值号右边所赋的值要在 变量类型所能表示的范围内。例如,定义的变量是整数类型的,不可把 3.3 这样一个小数 赋给该变量作为它的值。 变量不可重复定义,在同一个函数里面,不能定义两个相同名字的变量。下面的形式定义变量是错误的:int count;count = 3;int count; /重复定义若要修改变量的值,只需重新用赋值运算符将新的值赋给该变量即可,如count = 10;

8、下面的程序代码显示了如何对变量进行赋值,并修改变量的值。例 2.1 对变量进行赋值,并修改变量的值。程序代码如下:using System;namespace ConsoleApplication1class Programstatic void Main(string args)int number; /定义整型变量 numbernumber = 15; /对该整型变量进行赋值,其值为 1529第 2 章 C#基本语法Console.WriteLine(“number=0“,number); /输出 number 的值到控制台number = 5; /对 number 重新赋值Console

9、.WriteLine(“number=0“, number); /打印 number 的新值程序的输出为:Number=15Number=53. 变量声明的同时进行初始化C#中并不要求在声明变量的同时初始化变量(即为变量赋值),但是为变量赋值通常是程序员的良好习惯。例如:float d = 2.14;该语句中的 float 是一种数据类型,该语句声明一个浮点数类型变量 d,关于浮点数类型将在下一节中详细讲解。上面这句代码在声明 folat 型变量的同时将其初值设置为 2.14。对变量声明的同时进行初始化,若没有对变量进行赋值直接输出变量的值,程序会报错。读者可以输入以下程序代码,查看运行结果。

10、例 2.2 定义整型变量,并对其赋值,从控制台输出值。程序代码如下:using System;namespace ConsoleApplication1class Programstatic void Main(string args)int number=15; /定义整型变量 number,同时对该变量赋初值int count; /定义整型变量 count Console.WriteLine(“number=0,count=1“,number,count); /输出变量值该程序在运行时遇到错误,程序编译不通过,在错误列表中能看到这样一句话:“使用了未赋值的局部变量count”。如图 2.2

11、 所示,在错误列表中可以看到这句错误提示,单击该错误,程序代码编写部分就会显示错误所在,观察发现 count 变量上有了蓝色的阴影。如何修改程序相信大家知道,通过这个例子我们必须明确认识到,在声明变量的同时一定不要忘记对变量进行赋值。有两种赋值的方式:声明变量的同时进行赋值;先声明,再进行赋值。另外再次强调每一个变量都有自己的名称,在使用变量进行操作前必须对变量进行声30Visual C# 2008 程序设计与应 用教程明,否则会导致错误,且 C#规定不能用任意的字符作为变量名,变量的命名规则应该遵循标识符的命名规则。31第 2 章 C#基本语法图 2.2 例 2.2 的运行结果2.3.3 数

12、据类型在 2.3.2 节中提到了变量声明时必须指定变量的类型,在 C#中可用的数据类型有哪些?这些数据类型的含义是什么?数据类型之间又有哪些关系?本节将详细讲解有关数据类型的相关知识。现实世界中的数据类型是多种多样的,因此必须让计算机了解需要处理什么样的数据,以及采用哪种方式进行处理,按什么格式保存数据等。其实,任何一个完整的程序都可以看成一些数据和作用于这些数据上的操作。每一种高级开发语言都为开发人员提供一组数据类型,不同的语言所提供的数据类型不尽相同。对于程序中的每一个用于保存信息的量,在使用时都必须声明其数据类型,以便编译器为它分配内存空间。按照不同的划分方法,有以下两种划分数据类型的方

13、式。1. 内置类型和构造类型C#语言的数据类型按内置和自定义划分,有内置类型和构造类型,如图 2.3 所示。内置类型是C#提供的、无法再分解的一种具体类型。每种内置类型都有其对应的公共语言运行库类型(或称为.NET 数据类型 )。构造类型是在内置类型基础上构造出来的类型。表 2.2 列出了 C#包含的内置类型。object string byte, sbyte int, uint short, short lng, ulng char bol flat double ecimal 内 置 类 型 构 造 类 型 枚 举 数 组 结 构 集 合 类 接 口 委 托 数 据 类 型 图 2.3 按

14、内置和自定义划分的数据类型32Visual C# 2008 程序设计与应 用教程表 2.2 内置数据类型C#类型 .NET 类型 说 明 示 例object System.Object 所有其他类型的基类型 object obj=null;string System.String 字符串类型,Unicode 字符序列 string s=“hello“;sbyte System.Sbyte 8 位有符号整型 sbyte val=12;byte System.Byte 8 位无符号整型 byte val=12;int System.Int32 32 位有符号整型 int val=12;uint S

15、ystem.UInt32 32 位无符号整型 uint val1=12;uint val2=32U;short System.Int16 16 位有符号整型 short val=12;ushort System.UInt16 16 位无符号整型 ushort val=12;long System.Int64 64 位有符号整型 long val1=12;long val2=12L;ulong System.UInt64 64 位无符号整型ulong val1=23;ulong val2=23U;ulong val3=56L;ulong val4=78UL;char System.Char 字符

16、型,一个 Unicode 字符 char val=h;bool System.Boolean 布尔型,值为 true 或 false bool val1=true;bool val2=false;float System.Float 32 位单精度浮点型,精度为 7 位 float val=12.3F;double System.Double 64 位双精度浮点型,精度为 1516 位 double val=23.12D;decimal System.Decimal 128 位小数类型,精度为 2829 位 decimal val=1.23M;注:前面的位表示二进制数,后面的精度是指对应十进制

17、数的有效位数,其他类似。2. 值类型和引用类型在 C#语言中,根据数据存储的位置,可以把数据类型分为两种:值类型(Value Type)和引用类型(Reference Type),如图 2.4 所示。 简 单 类 型 枚 举 类 型 结 构 类 型 值 类 型 数 组 类 接 口 代 理 引 用 类 型 数 据 类 型 整 型 数 据 类 型 浮 点 数 类 型 字 符 类 型 布 尔 类 型 图 2.4 按内置和自定义划分的数据类型33第 2 章 C#基本语法1) 值类型值 类 型 变 量 将 其 数 据 存 储 在 堆 栈 中 , 把 一 个 值 类 型 变 量 赋 给 另 一 个 值 类

18、 型 变 量 , 会 在堆 栈 中 创 建 同 一 个 数 据 的 两 个 相 同 的 副 本 , 改 变 其 中 一 个 值 的 数 据 不 会 影 响 另 一 个 值 的 数据 。值类型变量存放的是数据本身,引用变量存储的是数据的引用。下面的语句声明了两个 int 型变量,它们的值相同,但是在内存中却占用不同的地址,彼此相互独立,当改变其中一个变量的值时另外一个变量的值不变。例 2.3 值类型举例。程序代码如下;using System;namespace ConsoleApplication1class Programstatic void Main(string args)int a

19、= 11; /声明整型变量 a 并对其赋初值为 11int b = a; /声明整型变量 b 并将变量 a 的值赋给变量 b Console.WriteLine(“a=0,b=1“, a,b);/分别输出 a,b 的值b = 13; /将变量 b 的值改变为 13Console.WriteLine(“a=0,b=1“, a,b); /再次输出 a,b 的值例 2.3 的运行结果如图 2.5 所示。由上面的例子可以看出,将一个值类型变量赋给另一个值类型变量,若不对这两个值类型变量进行相互赋值操作,改变其中一个值的数据时不会影响另一个值的数据。注意:语句 int b = a;的意思是将变量 a 的

20、值赋给变量 b,该语句正确的前提是, 变量 a与变量 b 必须具有相同的数据类型。在 C#中,值类型主要分为简单类型和结构类型。(1) 简单类型简单类型(Simple Type)是直接由一系列元素组成的数据类型。C#语言提供了一组已经定义好了的简单类型。单纯地从计算机的表示角度来看,这些简单类型可以分为整型数据类型、布尔类型、字符类型和浮点数类型。 整型数据类型整型数据类型,顾名思义,就是变量的值为整数的值类型。前面多次用到的一种整型数据类型 int,整型指的是任何不包括小数部分的数值。计算机语言中的整型与数学上的整数的定义有点差别,这是由于计算机的存储单元有限所造成的。C#语言中提供了 4

21、种整型数据类型,如下所示。 整数,包括 int 和 uint。int 类型的变量是带符号的,既可以为正也可以为负,使图 2.5 例 2.3 的运行结果34Visual C# 2008 程序设计与应 用教程用 4 字节(32 位)可以存储的数值范围为-2 312 31-1(当使用的 32 位中的 1 位表示正负后,可以存储的值便只能到 231-1)。uint 表示无符号的整数类型,它只能存储使用 4 字节(32 位)能够表示的无符号整数,即 02 32-1。 短整型,包括 short 和 ushort。之所以称为短整型是因为该数据类型与整数类型相比,短整型表示的数据范围比整数类型表示的数据范围要

22、小。C#中短整型只占用2 字节,short 表示的数值范围为-2 152 15-1,ushort 表示的数值范围为 02 16-1。 长整型,包括 long 和 ulong。如果要表示的数据值太大,不能用整数和短整型表示,这时就需要定义一个长整型的数据类型。C#中长整型占用 8 字节(88 位),根据占用的字节数计算得到 long 表示的数值范围为-2 63 263-1,ulong 表示的数值范围为 02 64-1。 Byte 型,包括 byte 和 sbyte。当需要表示的数据比较小时,可以用 Byte 型数据,Byte 型数据占用 1 字节(8 位)。跟前面的数据类型一样,Byte 型数据

23、类型也分有符号(sbyte)与无符号(byte)。sbyte 型的取值范围为-128 127,byte 型的取值范围为 0255。补充:一些数据类型前的 u 是 unsigned 的缩写,表示的是无符号类型,该数据类型的数据不能表示负数,即不能在这些 类型的变量中存储负号。整型数据的表示方法有以下几个。 十进制整数,如:120、456、0。 十六进制整数,以 0x 或 0X 开头,如:0x122 表示十进制数 290,0X12 表示十进制数-18。 无符号整数,可以用正整数表示无符号数,也可以在数字的后面加上 U 或 u,如250U。 长整数,可以在数字的后面加上 L 或 l,如 125L。表

24、 2.3 展示了各个整型数据类型占用的不同内存空间和取值范围。表 2.3 整型数据类型的分类数据类型 特 征 取值范围sbyte 有符号 8 位整数 -128127byte 无符号 8 位整数 0255short 有符号 16 位整数 -32 76832 767ushort 无符号 16 位整数 065 535int 有符号 32 位整数 -2 147 483 6482 147 483 647uint 无符号 32 位整数 04 294 967 295long 有符号 64 位整数 -9 223 372 036 854 775 8089 223 372 036 854 775 807ulong

25、 无符号 64 位整数 018 446 744 073 709 551 615 浮点数浮点数是那些带有小数的数据,常用的浮点数类型有 float(单精度) 类型和 double(双精35第 2 章 C#基本语法度)类型,两者的差别在于取值范围和精度不同。在对精度要求不高的计算中,可以采用单精度型,而采用双精度的结果将更为精确。还有一种类型为 decimal 类型,decimal 类型主要是为了方便在金融和货币方面的计算。在现代的企业应用程序中,不可避免地要进行大量金融和货币方面的计算和处理,而在目前采用的大部分程序设计语言中,程序员都要自己定义货币类型等,这是一个遗憾。为此,C#专门提供这种数

26、据类型来弥补这一遗憾。注意:计算机进行整数类型数值运算的速度大大高于 对浮点数的运算。浮点数据的表示形式有以下几个。 十进制数形式:由数字和小数点组成,且必须有小数点,如0.123、1.23、123.0。 科学计数法( 也作科学记数法) 形式:如 123e3 或 123E3。 float 型的值:在数字后加 f 或 F,如 1.23f。 double 型的值:在数字后加 D 或 d,如 12.8d。 decimal 型的值:在数字后加 M 或 m,如 99.2m。当定义一个 decimal 类型变量并且给其赋值的时候,使用 m 后缀以表示它是一个十进制类型。例如:decimal de = 2.

27、38m;若在这里把语句改写为:decimal de = 2.38;那么在 decimal 型变量 de 被赋值前,它将被编译器当做双精度(double)类型来处理。 布尔类型在编写应用程序的流程时,有时需要判断当前的情况是否满足条件,进而进行一些操作。在 C#语言中最常用的判断条件就是判断某个变量的值的真假,这时的变量所属的类型即为布尔类型。在 C#语言中,布尔类型只能有两种取值,即 true 或 false。例如:bool flag=true; /定义 bool 型变量 flag 并将其初值赋为 true 字符类型字符包括数字字符(09)、英文字母(az, AZ)、表达符号(%,#等)。C#

28、提供的字符类型按照国际上公认的标准,采用 Unicode 字符集。字符的定义方法如下:char myChar = C;上面这行代码意思是:把“C”这个字符的值赋给变量 myChar,字符 C 的单引号是语言状态栏在拼音状态下的单引号。另外还有一种常用的类型是字符串类型。与字符类型不同的是,字符类型只由一个字符组成,而字符串类型的字符是由一系列的字符组成的。字符串的定义如下:String myString = “abc123“;36Visual C# 2008 程序设计与应 用教程字符串的详细内容将在第 4 章中讲解。除了常规字符外,有时还需要使用一些扩展字符,表 2.4 列出了一些转义字符及其

29、含义。以“”为例,反斜杠“”后面的字符表示的是特殊字符,由于单引号“”在程序中有特殊的用途,因此当需要在字符前加“”时,必须在“ ”前加反斜杠“ ”,例如“a”,例 2.4 将详细说明。表 2.4 转义字符及其含义转义字符 字 符 名 单引号” 双引号 反斜杠0 空字符a 感叹号(产生鸣响)b 退格n 换行t 水平制表符v 垂直制表符f 换页r 回车例 2.4 转义字符的用法。程序代码如下:using System;namespace ConsoleApplication1class Programstatic void Main(string args)char ch1 = a; /定义字符

30、型变量 ch1 并把字符 a 赋给 ch1char ch2 = b; /定义字符型变量 ch2 并把字符 b 赋给 ch2Console.WriteLine(“这是文本的第一行“);Console.WriteLine(“nnn 跳过三行“); /三个n 表示跳过三行Console.WriteLine(“onettowtthree“); / t 表示空格Console.WriteLine(“单引号:n 双引号:“);Console.WriteLine(“n ch1=0 cha2=1“, ch1, ch2);图 2.6 所示为例 2.4 的运行结果。37第 2 章 C#基本语法图 2.6 例 2.

31、4 的运行结果38Visual C# 2008 程序设计与应 用教程上述例题说明了转义字符“n ”、“t”以及单引号双引号的用法。有关字符和字符串的内容,将在第 4 章中进行详细的讲解。补充:C#中可以声明的变量类 型并不仅限于 C#预先定义 的那些。因为 C#有自定义类型的功能,开发人员可根据自己的需要,建立各种特定的数据 类 型,以方便存储复杂的数据。(2) 结构类型结构是一种用关键字 struct 声明的自定义数据类型,可以包含构造函数、常数、字段、方法、属性、索引器、运算符和嵌套类型等。在一个结构类型中,可以定义 C#的任何基本数据类型的组合,在结构类型中还可以定义另外一种结构类型。在

32、结构类型中定义基本数据类型组合,程序员可以根据自己的需求在结构类型中定义自己所需要的数据类型。例如,定义结构类型 People。struct Peoplepublic string name;public int age;public int height;public double weight;结构类型中定义的变量不能在声明时被赋值初始化,若要对结构类型中的成员进行赋值,可以这样:People p1;p1.name=”zhangsan”;p1.age=20;p1.height=180;p1.weight=65;其中 People p1;的含义是实例化一个 People 结构体类型,其名称为

33、 p1,定义后可以对其成员变量进行赋值。需要注意的是,在对结构体类型成员变量赋值时,变量的值要和变量所定义的类型相一致。结构类型使用简单,并且很有用,但是要牢记:结构在堆栈中创建,是值类型,它适合于这样的情况,每当需要一种经常使用的类型,而且大多数情况下该类型只是一些数据时,使用结构性能较好。2) 引用类型引用类型的变量将其数据存储在堆中,把一个引用类型数据的变量赋给另一个引用类型数据的变量,只是在内存中创建对同一个位置的两个引用,改变其中任何一个变量的数值都会影响其他引用变量的数值。当值类型的变量按值存储信息时,变量包含值的实际信息。例如,当将 345 存储到变量 x 中后,x 的值便是 3

34、45。引用存储信息比较复杂些,若是变量按引用存储,而不是存储信息本身,则变量存储的将是信息所在的位置。例如,若 x 是一个引用类型的变量,则它包含的是关于值 345 所39第 2 章 C#基本语法在位置的信息,而并不存储值 345 本身。引用类型变量存储值参见图 2.7。图 2.7 引用类型变量存值示意图C#中 的 引 用 类 型 有 4 种 : 类 、 数 组 、 代 理 、 接 口 。 对 这 4 种 引 用 类 型 , 在 以 后 的 章 节中 都 会 详 细 地 介 绍 , 数 组 将 在 第 4 章 给 予 讲 解 , 类 、 代 理 、 接 口 将 在 第 7 章 进 行 详 细

35、的 介绍 。2.3.4 常量常量顾名思义就是在使用过程中不会发生变化的量。在声明和初始化常量时,要在变量前加 const 关键字。常量声明的基本语法为:private/public/internal/protected const int/double/long/bool/string/. VariableName = value;其中 private、public、internal 和 protected 为修饰符,也可以在声明变量类型前加这些修饰符。例如:public int a;private、public、internal 和 protected 是用来修饰变量的访问级别的。声明变量时

36、只能使用其中一个。表 2.5 说明了 5 种可能的访问级别的访问权限。表 2.5 访问级别修 饰 符 访问权限private 变量只能在它所属的类别中被访问protected 变量只能在它所属的类别中被访问,或者在派生该类型的其他类型中被访问public 变量可以作为它所属的类型的一个字段,在任何地方都可以访问它protected internal 变量只能在当前程序中被访问,或者在派生当前类型的其他类型中被访问internal 变量只能在当前的程序中被访问下面是一个声明常量的具体例子:const double PI = 3.1415926;或者:private const double PI

37、 = 3.1415926;将 PI 声明为一个固定值,可以在程序中使用 PI,但是不能修改它的值。上面讲到要40Visual C# 2008 程序设计与应 用教程重新修改值的简单方法,就是用赋值符号“=”进行重新赋值,但是这里不能对 PI 进行重新赋值。常量一旦被声明初始化后,它的值就不能再改变,否则系统就会自动报错。41第 2 章 C#基本语法2.3.5 匿名类型C# 1.0,1.1 以及 1.2 版本中,若要声明一个变量必须指定变量的类型,但在 C# 3.5 中,可以不明确指定其数据的类型,而使用关键字 var 声明。 var 关键字用来创建隐形局部变量,它指示编译器根据初始化语句右侧的表

38、达式推断变量的类型。推断类型可以是内置类型、匿名类型、用户定义类型、.NET Framework 类库中定义的类型或任何表达式。C#的类型转换机制提供类型安全的保障。下面是几个常见的隐形局部变量。var i=5;var str=“hello world“;var d=10.5;var myary=new int1,2,3,4,5;上面的变量都使用了 var 关键字定义,其效果类似于下面的代码。int i=5;string str=“hello world“;double d=10.5;int myary=new int1,2,3,4,5;var 使用很简单,但需要注意以下几点。 var 必须包

39、含初始化器。 初始化器必须是一个表达式。 初始化器的编译器类型不能是 null 类型。 如果局部变量声明了多个声明符,那么这些变量必须具备相同的编译器类型。 不能在同一语句中初始化多个隐式类型的变量。 由 var 声明的变量不能用在初始化表达式中,例如 var v= v+;,这样编译时会出现错误。2.3.6 C#中的类型转换在使用 C#语言编程时通常会遇到数据类型之间的转换,下面介绍几种常见的数据类型转换。 数值类型之间的相互转换。 字符与编码之间的转换。 数值字符串和数值之间的转换。 装箱和拆箱值类型和对象类型之间的转换。1. 数值类型之间的相互转换这里提到的数值类型包括 byte、shor

40、t、int、long 、fload、double 等,根据这个排列顺序,各种类型的值依次可以向后自动进行转换。例如,把一个 short 型的数据赋值给一个 int 型的变量,short 值会自动转换成 int 型值,再赋给 int 型变量。 42Visual C# 2008 程序设计与应 用教程byte a = 1; short b = a; int c = b;long d = c; float e = d; double f = e;以上的赋值是可以的,且所有变量得到的值都是 1。但若在赋值时未按照上面的排列顺序进行赋值,编译时编译器会报错。例如;int g = 1; short h =

41、g; 结果编译报错:无法将类型 int 隐式转换为 short。若要坚持进行转换,则采用另外一种转换方法强制类型转换,强制类型转换又称为显式转换,使用“(类型名 ) 变量名”的形式语句来对数据进行强制转换。对上例进行修改如下:int g = 1;short h = (short) g;/ 将 int 型的 g 的值强制转换成 short 型后再赋给变量 h编译通过,运行结果输出了 h = 1,转换成功。提示 :在进 行数据类型的 转换编程时,最好显式地给出转换的类型。这样既方便程序的阅读和维护,又不易导致错误 。不存在到 char 类型的隐式转换,也就是说其他整型值不能自动转化为 char 类

42、型。需 要 注 意 的 是 在 强 制 类 型 转 换 时 , 不 得 不 考 虑 一 个 问 题 : int 型 的 范 围 是 -2 147 483 6482 147 483 647,而 short 型的范围是-32 76832 767,如果变量 g 的值超过了 short 型的范围会出现什么样的情况?改写代码如下:将 g 的值改为 23 777,比 23 767 大 10。int g = 23777;short h = (short) g;编译没有出错,运行结果却不是 h = 23 777,而是 h = 9。因此,在进行转换的时候,应当注意被转换的数据不能超出目标类型的范围。这不仅体现在

43、多字节数据类型(相对,如上例的 int) 转换为少字节类型( 相对,如上例的 short) 时,也体现在字节数相同的有符号类型和无符号类型之间的转换,如将 byte 的 129 转换为 sbyte 就会溢出。读者可以自己编写相应的代码体会各种数据类型转换的结果,以便加深理解。2. 字符与编码之间的转换有些时候需要得到一个英文字符的 ASCII 码或者一个汉字的 Unicode 码,将英文字符型数据强制转换成合适的数值型就可以得到相应的 ASCII 码;反之,如果将一个合适的数值型数据强制转换成字符型数据,就可以得到相应的字符。例如:char ch = a; short ii = 65;Cons

44、ole.WriteLine(“The ASCII code of “ + ch + “ is: “ + (short) ch + “n“);43第 2 章 C#基本语法Console.WriteLine(“ASCII is “ + ii.ToString() + “, the char is: “ + (char) ii + “n“);char cn = 中 ; short uc = 22478;Console.WriteLine(“The Unicode of “ + cn + “ is: “ + (short) cn + “n“);Console.WriteLine(“Unicode is

45、 “ + uc.ToString() + “, the char is: “ + (char) uc + “n“);运行结果为:The ASCII code of a is: 97ASCII is 65, the char is: AThe Unicode of 中 is: 20013Unicode is 22478, the char is: 城从这个例子中能够非常清楚地了解:通过强制转换可以得到字符的编码,或者得到编码表示的字符。3. 数值字符串和数值之间的转换在介绍这种转换之前,首先要搞清楚什么是数值字符串。前面讲数据类型时,讲解到字符串类型,字符串是用一对双引号包含的若干个字符来表示,

46、如“123”。而“123”又相对特殊,因为组成该字符串的字符都是数字,这样的字符串,就是数值字符串。在我们的眼中,这既是一串字符,也是一个数,但计算机却只认为它是一个字符串,不是数。因此,在某些时候,例如输入数值的时候,把字符串转换成数值;而在另一些时候,需要相反的转换。将数值转换成字符串非常简单,因为每一个类都有一个 void ToString() 方法。所有数值型的 void ToString() 方法都能将数据转换为数值字符串。如 123.ToString()将得到字符串“123”。那么反过来,将数值型字符串转换成数值又该怎么办呢? short, int, float 等数值类型均有一个

47、 static Parse() 函数。这个函数就是用来将字符串转换为相应数值的。以一个 float类型的转换为例: float f = float.Parse(“543.21“);,其结果 f 的值为 543.21F。当然,其他的数值类型也可以使用同样的方法进行转换,下面的例子可以更明确地说明转换的方法。 float f = 54.321F;string str = “123“;int a;Console.WriteLine(“f = “ + f.ToString() + “n“);a= int.Parse(str);Console.WriteLine(“i=“+ a+“n“);运行结果: f

48、 = 54.321 i=1234. 装箱和拆箱 值类型与对象类型之间的转换另外,C#语言类型系统提出了一个核心概念:装箱 (Boxing)和拆箱(Unboxing)。装箱和拆箱机制使得在 C#类型系统中,任何值类型、引用类型和 object(对象)类型之间都可以44Visual C# 2008 程序设计与应 用教程进行转换,我们称这种转换为绑定连接。简单地说,有了装箱和拆箱的概念,对任何类型的值来说最终都可以看做对象类型。装箱转换是指将一个值类型隐式转换成一个对象类型,或者把这个值类型转换成一个被该值类型应用的接口类型(interface-type)。把一个值类型的值装箱,也就是创建一个对象实

49、例并将这个值复制给这个对象。例如:int i = 10;object obj = i;装箱过程如图 2.8 所示。图 2.8 装箱示意图也可以用显式的方法来进行装箱操作:int i = 10;object obj = object(i);看一下下面的程序。using System;class Testpublic static void Main()int i = 10;object obj = i; /对象类型if(obj is int)Console.Write(“The value of i is boxing!”);i = 20; /改变 i 的值Console.WriteLine(“int: i = 0”,i);Console.WriteLine(“o

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报