C#程序开发基础——C#语法入门.ppt_第1页
C#程序开发基础——C#语法入门.ppt_第2页
C#程序开发基础——C#语法入门.ppt_第3页
C#程序开发基础——C#语法入门.ppt_第4页
C#程序开发基础——C#语法入门.ppt_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

第2章 C#程序开发基础C#语法入 门 数据类型 常量和变量 运算符和表达式 类型转换 数组和枚举 2.1 数据类型 所谓数据类型,就是指数据的种类。在应用程 序中,要使数据能被计算机识别并处理,需要将数据 分为不同的类型,这样的好处是存储和计算方便。比 如在对姓名和地址的处理中需要使用字符,在对货币 和数量的处理中又需要使用数字或不同精度的小数, 这些数据都是不同类型的数据。如姓名是“张三”为字 符型、年龄是25为整型等。为什么要定义数据类型 呢?之所以要定义数据类型,是因为计算机是没有思 维的, 你只有告诉它,他才知道这是什么。比如你定义“int a”,它才知道a是一个整数, 否则计算机就识别不出来它是个什么东西而出错。 2.1.1 值类型和引用类型概述 oC#的数据类型分为值类型、引用类型和指针类型(Pointer Type)3大类。 值类型包括简单类型、结构类型和枚举类型。 引用类型包括类类型、接口类型、委托类型和数组类型。 指针类型只能用于不安全模式。 值类型的数据存储在内存的堆栈中,可以提供快速访问。如果 变量是值类型的,这个变量就包含实际数据,在一个独立的内 存区域保存自己的值,如果在代码中修改其值后,在内存中会 保存修改后的值。C#中大多数基本数据类型如:整型、字符型 、浮点型、布尔型等都属于值类型,结构、枚举也属于值类型 。 引用类型指向存储在内存堆中的数据的指针或 引用。与纯粹的地址不同,引用总是指向一 个对象,而且这个对象具有指定的类型,并 且在堆上分配了地址。字符串、数组、接口 、类都属于引用类型。 2.1.2值类型 o C#语言的值类型包括整数类型、浮点数类型、布 尔类型、字符类型等简单类型以及枚举类型和结构 类型。下面介绍简单类型,枚举在2.5节中介绍, 结构在4.4节中介绍。 1.整数类型 整数类型的变量值为整数。计算机语言提供 的整数类型的值总是在一定范围之内。根据 数据在计算机内存中所占的位数来划分, C#有8种整数类型的数据,这些数据及其在 计算机中表示整数的范围如下表所示。 数据 类 型 含义取值范围 sbyte 有符号8位 整数 128127(-27271) byte 无符号8位 整数 0255(0281) short 有符号16位 整数 3276832767(215215 1) ushort 无符号16位 整数 065535(02161) int 有符号32位 整数 21474836482147483647 (2312311) uint 无符号32位 整数 04294967295(02321) long 有符号64位 整数 9223372036854775808 9223372036854775807 (2632631) ulong 无符号64位 整数 018446744073709551615( 02641) 2. 浮点数类型和十进制类型 浮点数类型又称为实数类型,是指带有小数部分的数 字。C#支持两种浮点数类型:单精度(float)和 双精度(double)。它们的差别在于取值范围和 精度不同。浮点数类型数据的特征如下表所示。 数据类型含义 取值范围 有效 数字位数 float 32位浮点数 1.510-453.41038 7 double 64位浮点数 5.010- 3241.710308 1516 3. 字符类型 在C#中,字符常量是用单引号(即撇号)括起来的一 个字符,如a、x、D、?、$等都是字符常量 ,注意,a和A是不同的字符常量。 char c1=X; /将字符X赋给字符型变量c1 除了以上形式的字符常量外, C#还允许用一种特殊形式的字符常量,即以“”开头 的字符序列。它们一般实现一定的控制功能,并没 有一定的字型,这种非显示字符难以用一般形式的 字符表示,故规定用这种特殊形式表示,这些形式 的字符也称为“转义字符”。 4. 布尔类型 布尔类型变量只有两种取值:true(代表“真” )和false(代表“假”),并且true值不能 被其他任何非0值所代替。 bool flag=true; /正确 bool flag=1; /错误,不能将一个整型 数据赋给布尔类型的变 【范例2-1】 o已知圆的半径为12厘米,计算圆的面积。 o在Visual Studio 2008中新建C#控制台程序,项目名为Circle; 在Program.cs的Main 方法中输入以下代码。完整的代码如下: decimal pi = 3.14159M; /字母M表示数据是decimal类型 int r = 12; /定义int型变量r 表示圆的半径 decimal s = 0; /用来存放圆的面积 s = pi * r * r; /计算圆的面积 Console.WriteLine(“圆的半径是0,n圆的面积是:1”,r, s);/在控制台输出结果 Console.ReadKey(); /暂停运行,按任意键继续 2.1.3引用类型 C#中的值类型比较简单,对更加复杂的数据处理效率很低。C#的 引用类型主要用来描述结构复杂、抽象能力比较强的数据,它 与值类型数据是相并列的。同为引用类型的两个变量,可以指 向同一个对象,也可以针对同一个变量产生作用,或者被其他 同为引用类型的变量所影响。类类型、接口类型、委托类型和 数组类型属于引用类型。下面介绍字符串类型,其他引用类型 将在2.5节和第4、5章分别介绍。 字符串是一种数据类型,一种类别,即它属于引用类型,还可以 视为一个由字符组成的数组。使用string来声明字符串变量, 字符串值放在一对双引号中,例如: string name=“Tom”; 关于字符串的详细操作,将在3.4节详细介绍。 第2章 C#程序开发基础C#语法入 门 数据类型 常量和变量 运算符和表达式 类型转换 数组和枚举 2.2 常量与变量 o常量和变量代表在程序中的数据,是程序运 行不可缺少的一部分,下面我们介绍常量和 变量的使用。 2.2.1 变量 变量的声明语法如下。 访问修饰符 变量修饰符 变量的数据类型 变量名表 其中【访问修饰符】和【变量修饰符】都是可以省略,在4.1节中 将给出详细介绍。变量声名和赋值如下所示: private int x; /声明x为整型变量,private可以省略 x=10; /变量的赋值,让变量x的值为10 string name=”John”;/声明一个字符串变量name,值为 John 也可以在声明变量的同时赋值,如: int x=10; 可以在一行声明多个变量,如: int x=3 , y=8; /不同变量用逗号隔开。变量命名 规则:变量名 2.2.1 常量 常量就是在程序运行过程中其值固定不变的量,即在 程序执行期间,常量的值不会发生改变。 其格式如下: 访问修饰符号 const 类型 常量表达式 ; 其中【访问修饰符号】都是可以省略。常量的修饰 符可以是new、public、protected、internal、 private。常量的表达式表示常量的名字。如下所 示: public const int x=3 , y=8; 2.2.3 隐式类型的局部变量 隐式类型的局部变量又叫匿名变量,是C#3.0版本中 引入的一个新用法,使用var声明。可以用var声明 任何类型的局部变量,它只是负责告诉编译器,该 变量需要根据初始化表达式来推断变量的类型,而 且只能是局部变量。 语法如下: var 变量名称=变量值; 例如: var i = 8; / 局部变量i作为整型数据 被编译 var s = “Hello C#!”; /局部变量s作为字符串 数据被编译 o【范例2-2】 定义常量和变量,熟悉常量 、变量的使用。 第2章 C#程序开发基础C#语法入 门 数据类型 常量和变量 运算符和表达式 类型转换 数组和枚举 2.3 运算符和表达式 C#语言中的表达式类似于数学运算中的表达式 ,用运算符把操作对象连接起来的式子就是 表达式,表达式在经过一系列运算后得到一 个运算结果,结果的类型由参加运算的操作 对象的数据类型决定。运算符是表示各种不 同运算的符号。在程序设计语言中运算是指 对各种数据进行处理。比如表示加法运算就 用“+”运算符。 2.3.1 一元运算符 一元运算符的操作数只有一个。 常见的一元运算符包括自加运算符“+”、自减运算符 “-”和逻辑非“!”。+可将操作数加1,-可将操 作数减1,逻辑非是将表达式的值取反。自加、自 减运算符在表达式前和表达式后的结果是不一样的 , 自加和自减运算符其实是二元运算符的简化写法 n+;等价于n=n+1;, C#中还有其他的简化写法,如下表所示。 简化运算符等价表达式简化运算符等价表达式 n+和+n 2.3.2 二元运算符 二元运算符就是需要两个操作数参与的运算符,我们 很熟悉的加减乘除四则运算的符号“+”、“-”、“*” 、“/”就是二元运算符。如“3+8”,“+”运算符的两 个操作数分别是3和8。 比较运算符(结果是逻辑性型,即True或 False)比较 一个数是否大于另一个数 逻辑运算符(结果是逻辑型) 输出结果为8。 n=3 = 比较运 算符 = != AND运 算符 int i=st; /将短整型隐式转 换成整型 在C#没有引入var类型的变量之前,隐式转 换仅存在于数值类型的数据之间,引入var 类型之后,var定义的变量可以实现隐式数 据转换。 1数值类型数据间的隐式转换 o隐式数据类型转换适用于数值类型的数据之 间,如整型数据(int)可以隐式转换为浮点型 (float)和双精度型(double)数据;浮点型 (float)可以隐式转换为双精度型(double) 数据。隐式数据类型转换遵循以下规则才能 实现。 从左边的类型可转到右边的类型到 sbyteshort、int、long、float、double 或 decimal byteshort、ushort、int、uint、long、ulong、float、double 或 decimal shortint、long、float、double 或 decimal ushortint、uint、long、ulong、float、double 或 decimal intlong、float、double 或 decimal uintlong、ulong、float、double 或 decimal longfloat、double 或 decimal charushort、int、uint、long、ulong、float、double 或 decimal floatdouble ulongfloat、double 或 decimal 2var类型数据隐式转换 ovar定义的变量的数据类型是由赋值的数据决定的 。如var Name=”Johnson”,此时变量Name就 是字符串类型,进行了隐式转换。 1 var intNum=250; 2 int i=intNum; /var型变量 intNum隐式转换成整型; 3 var Name=”Johnson”; 4 string strName=Name;/var型变 量Name隐式转换string型; 2.4.2 显式转换显式 o转换又叫强制类型转换,需要用户明确地指定转换 的类型。通过显式数据转换,可以把取值范围大的 数据转换为取值范围小的数据。显式转换可以发生 在表达式的计算过程中,可能引起信息丢失,例如 下面代码把float类型的变量pi强制转为int,小数 部分的信息就丢失了。 float pi=3.14f; /定义一个单精度的实数 int i=(int)pi; /将单精度强制转换为整 型行计算,i的值是3,不是3.14,造成信息丢失 2.4.3 使用Convert类转换 o.Net Framework提供了很多类库,其中System.Convert类 就是专门进行类型转换的类,通过Convert类提供的方法实现 各种基本数据类型间的转换。Convert类的常用方法有: 方法说明ToBoolean将指定的值转换为等效的布尔值。 ToChar将指定的值转换为 Unicode 字符。 ToDateTime将 指定的值转换为 DateTime。 ToDecimal将指定值转换为 Decimal 数字。 ToDouble将指定的值转换为双精度浮点数。 ToInt16将指定的值转换为 16 位有符号整数。 ToInt32将指 定的值转换为 32 位有符号整数。 ToString将指定值转换为 其等效的 String 表示形式。 例如: String MyString=”true”; Bool MyBool=Convert.ToBoolean(MyString);/ 将 String转换为Boolean型,MyBool=true String newString=”123456789”; Int MyInt=Convert.ToInt32(newString); /将字符串转换 为数字值,MyInt=123456789. 【范例2-5】隐式转换、显式转换使用 举例 在Visual Studio 2008中新建C#控制台程序,项目名为 TypeConvert; 在Program.cs的Main 方法中输入以下代码。完整的代码如下: 1 Console.WriteLine(“隐式、显式转换例子:”); 2 short r = 25; /r表示圆的半径; 3 int i = r; /将短整型r隐式转换成整型 4 float pi=3.14f; /定义一个单精度的实数 5 double s1=pi*i*i; /s1为double型,表示圆的 面积 6 int s2; 7 s2 = (int)pi * i * i; /s2为int型,表示圆的面积 8 var Name=“Johnson”; 9 string strName = Name; /var型变量rName隐式 转换string型 10 Console.WriteLine(“r=25,圆的面积=0,1”, s1, s2); 11 Console.WriteLine(“转换成功!”);第3行,将short类 型隐式转为int; 5行int和float类型隐式转为double类型;7行显式把 float转为int;89行,var类型隐式转为string类型。代码详解 2.4.4 装箱和拆箱 o拆箱是把“引用”类型转换成“值”类型,装箱是把“值”类型转换 成“引用类型”,是数据类型转换的一种特殊应用。有时某些方 法的参数要求使用“引用”类型,而想把“值”类型的变量通过这 个参数传入,就需要使用这个操作 o例如。 1 int n=4; /n是值类型 2 object obj=n; /封箱,把任何值类型隐式地转化为 object类型 ,其中object为引用类型 3 Console.WriteLine(“n的初始值为:0,装箱后的值为 1”,n,obj.ToString(); 4 int m=(int)obj; /拆箱,把一个object类型隐式地转换 为值类型; 5 Console.WriteLine(“引用类型的值为:0,拆箱后的值 为1”,obj.ToString(),m) 2.4.5 数值和字符串之间的转 oC#中字符串和数值之间经常互相转换,下 面介绍一下二者之间的转换方法。 (1) ToString()方法:数值类型的 ToString()方法可以将数值型数据转换为字 符串; (2) Parse()方法:数值类型的Parse()方法 可将字符串转换为数值型,如字符串转换为 整型使用int.Parse(string);字符串转换为 双精度浮点型使用double.Parse(string)等 。 例如: 1 int num1 = 25; 2 string str1 = num1.ToString();/num1的ToString()方 法将num1转为string赋给str1 3 string str2 = “38“; 4 int num2 = int.Parse(str2); /int.Parse()方法将字符串 str2转换为int类型 5 string str3 = “21“; 6 double num3 = double.Parse(str3); / double.Parse() 将字符串转换为双精度浮点型 7 string str4 = “56“; 8 float num4 = float.Parse(str4); / float.Parse()将字符 串转换为单精度浮点型 第2章 C#程序开发基础C#语法入 门 数据类型 常量和变量 运算符和表达式 类型转换 数组和枚举 2.5 数组和枚举 o 简单数据类型如整型、字符串类型等变量都 只能存储一个值,如需要存储多个相同类型 的数据, 可以使用数组。使用枚举,可以 避免不合理的赋值,使程序更加合理和安全 。本节讲解数组和枚举的使用。 2.5.1 数组的定义和使用 o数组是一个经过索引的对象集合。一维对象数组的 声明如下: 数据类型数组的大小或容量 数组名; 其中中的数组的大小或容量可以省略。如下所示 : int5 array1 /声明有五个数组元素的数组; 或 int array1 array1 = new int5; /和上面数组声明等价 ; 声明过的数值型数组中的数组元素默认值为零,引用 类型数值中的数组元素的默认值为 null,可以在创 建数组的同时初始化数组,如下所示: int array1 = new int 1, 3, 5, 7, 9 ; / 有5个元素的数组,初值分别为1, 3, 5, 7, 9 或 int array1 = new int5 1, 3, 5, 7, 9 ; / 数组的大小和数组元素的个数必须相等 或 int array1 = 1, 3, 5, 7, 9; 二维数组 o声明二维数组的语法是: 数据类型 , 数组名; 例如: 1 int, array2D = new int2,3; / 声明二维数组array2D 2 int, array2D2 = 1, 2, 3, 4, 5, 6 ; /声明二维数组array2D2的 同时初始化 3 2.5.2 Array类 oSystem.Array类提供了创建、操作、搜索和排序数组的许多静态方 法供程序调用,它是所有数组类型的抽象基类,不能直接从 System.Array显示地派生自己的数组类型。Array类常用的方法如 下: 方法名功能Clear清除将 Array 中的元素值Copy将一个 Array 的一 部分元素复制到另一个 Array 中CopyTo将当前一维 Array 的所有 元素复制到指定的一维 Array 中。Find搜索与指定谓词定义的条件 匹配的元素,返回整个 Array 中的第一个匹配项。FindAll检索与指 定谓词定义的条件匹配的所有元素。FindIndex搜索与指定谓词定义 的条件匹配的元素,返回 Array 或其某个部分中第一个匹配项的从零 开始的索引。GetLength获取Array 的指定维中的元素数。 GetValue获取当前 Array 中指定元素的值。IndexOf返回一维 Array 或部分 Array 中某个值第一个匹配项的索引。Initialize通过 调用值类型的默认构造函数,初始化值类型 Array 的每一个元素。 Reverse反转一维 Array 或部分 Array 中元素的顺序。SetValue将 当前 Ar

温馨提示

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

评论

0/150

提交评论