C#程序开发基础-C#语法入门.ppt

上传人:枫** 文档编号:568316650 上传时间:2024-07-24 格式:PPT 页数:49 大小:150KB
返回 下载 相关 举报
C#程序开发基础-C#语法入门.ppt_第1页
第1页 / 共49页
C#程序开发基础-C#语法入门.ppt_第2页
第2页 / 共49页
C#程序开发基础-C#语法入门.ppt_第3页
第3页 / 共49页
C#程序开发基础-C#语法入门.ppt_第4页
第4页 / 共49页
C#程序开发基础-C#语法入门.ppt_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《C#程序开发基础-C#语法入门.ppt》由会员分享,可在线阅读,更多相关《C#程序开发基础-C#语法入门.ppt(49页珍藏版)》请在金锄头文库上搜索。

1、第2章C#程序开发基础C#语法入门 数据类型 常量和变量 运算符和表达式 类型转换 数组和枚举2.1 数据类型 所谓数据类型,就是指数据的种类。在应用程序中,要使数据能被计算机识别并处理,需要将数据分为不同的类型,这样的好处是存储和计算方便。比如在对姓名和地址的处理中需要使用字符,在对货币和数量的处理中又需要使用数字或不同精度的小数,这些数据都是不同类型的数据。如姓名是“张三”为字符型、年龄是25为整型等。为什么要定义数据类型呢?之所以要定义数据类型,是因为计算机是没有思维的,你只有告诉它,他才知道这是什么。比如你定义“int a”,它才知道a是一个整数,否则计算机就识别不出来它是个什么东西而

2、出错。2.1.1 值类型和引用类型概述oC#的数据类型分为值类型、引用类型和指针类型(Pointer Type)3大类。值类型包括简单类型、结构类型和枚举类型。引用类型包括类类型、接口类型、委托类型和数组类型。指针类型只能用于不安全模式。值类型的数据存储在内存的堆栈中,可以提供快速访问。如果变量是值类型的,这个变量就包含实际数据,在一个独立的内存区域保存自己的值,如果在代码中修改其值后,在内存中会保存修改后的值。C#中大多数基本数据类型如:整型、字符型、浮点型、布尔型等都属于值类型,结构、枚举也属于值类型。引用类型指向存储在内存堆中的数据的指针或引用。与纯粹的地址不同,引用总是指向一个对象,而

3、且这个对象具有指定的类型,并且在堆上分配了地址。字符串、数组、接口、类都属于引用类型。2.1.2值类型oC#语言的值类型包括整数类型、浮点数类型、布尔类型、字符类型等简单类型以及枚举类型和结构类型。下面介绍简单类型,枚举在2.5节中介绍,结构在4.4节中介绍。1.整数类型 整数类型的变量值为整数。计算机语言提供的整数类型的值总是在一定范围之内。根据数据在计算机内存中所占的位数来划分,C#有8种整数类型的数据,这些数据及其在计算机中表示整数的范围如下表所示。数据类型含义取值范围sbyte有符号8位整数128127(-27271)byte无符号8位整数0255(0281)short有符号16位整数

4、3276832767(2152151)ushort无符号16位整数065535(02161)int有符号32位整数21474836482147483647(2312311)uint无符号32位整数04294967295(02321)long有符号64位整数92233720368547758089223372036854775807(2632631)ulong无符号64位整数018446744073709551615(02641)2. 浮点数类型和十进制类型浮点数类型又称为实数类型,是指带有小数部分的数字。C#支持两种浮点数类型:单精度(float)和双精度(double)。它们的差别在于取值范

5、围和精度不同。浮点数类型数据的特征如下表所示。数据类型含义 取值范围 有效数字位数float 32位浮点数 1.510-453.41038 7double 64位浮点数 5.010-3241.710308 15163. 字符类型在C#中,字符常量是用单引号(即撇号)括起来的一个字符,如a、x、D、?、$等都是字符常量,注意,a和A是不同的字符常量。char c1=X; /将字符X赋给字符型变量c1除了以上形式的字符常量外,C#还允许用一种特殊形式的字符常量,即以“”开头的字符序列。它们一般实现一定的控制功能,并没有一定的字型,这种非显示字符难以用一般形式的字符表示,故规定用这种特殊形式表示,这

6、些形式的字符也称为“转义字符”。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型变

7、量r 表示圆的半径decimal s = 0; /用来存放圆的面积s = pi * r * r; /计算圆的面积Console.WriteLine(“圆的半径是0,n圆的面积是:1”,r, s);/在控制台输出结果Console.ReadKey(); /暂停运行,按任意键继续2.1.3引用类型C#中的值类型比较简单,对更加复杂的数据处理效率很低。C#的引用类型主要用来描述结构复杂、抽象能力比较强的数据,它与值类型数据是相并列的。同为引用类型的两个变量,可以指向同一个对象,也可以针对同一个变量产生作用,或者被其他同为引用类型的变量所影响。类类型、接口类型、委托类型和数组类型属于引用类型。下面介绍

8、字符串类型,其他引用类型将在2.5节和第4、5章分别介绍。字符串是一种数据类型,一种类别,即它属于引用类型,还可以视为一个由字符组成的数组。使用string来声明字符串变量,字符串值放在一对双引号中,例如: string name=“Tom”;关于字符串的详细操作,将在3.4节详细介绍。 第2章C#程序开发基础C#语法入门 数据类型 常量和变量 运算符和表达式 类型转换 数组和枚举2.2 常量与变量o常量和变量代表在程序中的数据,是程序运行不可缺少的一部分,下面我们介绍常量和变量的使用。2.2.1 变量变量的声明语法如下。访问修饰符 变量修饰符 变量的数据类型 变量名表其中【访问修饰符】和【变

9、量修饰符】都是可以省略,在4.1节中将给出详细介绍。变量声名和赋值如下所示:private int x; /声明x为整型变量,private可以省略x=10; /变量的赋值,让变量x的值为10string name=”John”;/声明一个字符串变量name,值为John也可以在声明变量的同时赋值,如:int x=10;可以在一行声明多个变量,如:int x=3 , y=8; /不同变量用逗号隔开。变量命名规则:变量名2.2.1 常量常量就是在程序运行过程中其值固定不变的量,即在程序执行期间,常量的值不会发生改变。其格式如下: 访问修饰符号 const 类型 常量表达式 ;其中【访问修饰符号】

10、都是可以省略。常量的修饰符可以是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作为字符串数

11、据被编译o【范例2-2】 定义常量和变量,熟悉常量、变量的使用。 第2章C#程序开发基础C#语法入门 数据类型 常量和变量 运算符和表达式 类型转换 数组和枚举2.3 运算符和表达式C#语言中的表达式类似于数学运算中的表达式,用运算符把操作对象连接起来的式子就是表达式,表达式在经过一系列运算后得到一个运算结果,结果的类型由参加运算的操作对象的数据类型决定。运算符是表示各种不同运算的符号。在程序设计语言中运算是指对各种数据进行处理。比如表示加法运算就用“+”运算符。2.3.1 一元运算符一元运算符的操作数只有一个。常见的一元运算符包括自加运算符“+”、自减运算符“-”和逻辑非“!”。+可将操作数

12、加1,-可将操作数减1,逻辑非是将表达式的值取反。自加、自减运算符在表达式前和表达式后的结果是不一样的,自加和自减运算符其实是二元运算符的简化写法n+;等价于n=n+1;,C#中还有其他的简化写法,如下表所示。 简化运算符等价表达式简化运算符等价表达式n+和+n2.3.2 二元运算符二元运算符就是需要两个操作数参与的运算符,我们很熟悉的加减乘除四则运算的符号“+”、“-”、“*”、“/”就是二元运算符。如“3+8”,“+”运算符的两个操作数分别是3和8。比较运算符(结果是逻辑性型,即True或 False)比较一个数是否大于另一个数逻辑运算符(结果是逻辑型)&逻辑“与”两个操作数都为真时结果为

13、”真”,其余情况结果为”假”opr1&opr2|逻辑“或”两个操作数至少一个为真时结果为”真”,其余情况结果为”假”opr1|opr2 2.3.3 三元运算符三元运算符要求有三个操作数参与的运算。格式为:操作数1?操作数2:操作数3;其中操作数可以为变量或者表达式。输出结果为:如果操作数1为真,输出操作数2,如果操作数1为假,输出操作数3。三元运算符的输出结果取决于“?”前面的操作数1。例如:n=38 ? 3:8; 输出结果为8。n=38 ? 3:8; 输出结果为3。2.3.4 运算符优先级表达式有多个运算符时,表达式的求值顺序由运算符的优先级决定:先取优先级较高的运算符进行计算,将运算的结果

14、再运用于优先级较低的运算符。也遵从算术运算的“先乘除后加减”这样的规则,可以用圆括号“()”改变运算的优先次序。C#运算的优先级如下,越上面优先级越高,如果一个表达式中出现同一个优先级的运算符,运算顺序取决于其结合性。结合性指运算符在表达式中从左到右或从右到左的运算顺序。运算符组运 算 符优先级特殊运算符() + - new 高 低一元运算符+ - ! -x +x 和数据类型转换乘/除运算符* / % 加/减运算符+ -关系运算符 = 比较运算符= !=AND运算符&OR运算符|三元运算符? :赋值运算符= += -= *= /= %= 等 第2章C#程序开发基础C#语法入门 数据类型 常量和

15、变量 运算符和表达式 类型转换 数组和枚举2.4 类型转换o在输出结果时经常把整型、浮点型等类型转换为字符串,不同类型的数据进行运算时需要转换为同一类型才能正常计算,所有操作过程中经常涉及到数据类型之间的转换。C中数据类型的转换可以分为两类:隐式转换和显式转换。2.4.1 隐式转换o隐式转换,就是系统默认的、不需要加以声明就可以进行的转换。例如: short st=250; int i=st; /将短整型隐式转换成整型在C#没有引入var类型的变量之前,隐式转换仅存在于数值类型的数据之间,引入var类型之后,var定义的变量可以实现隐式数据转换。1数值类型数据间的隐式转换o隐式数据类型转换适用

16、于数值类型的数据之间,如整型数据(int)可以隐式转换为浮点型(float)和双精度型(double)数据;浮点型(float)可以隐式转换为双精度型(double)数据。隐式数据类型转换遵循以下规则才能实现。从左边的类型可转到右边的类型到sbyteshort、int、long、float、double 或 decimalbyteshort、ushort、int、uint、long、ulong、float、double 或 decimalshortint、long、float、double 或 decimalushortint、uint、long、ulong、float、double 或 de

17、cimalintlong、float、double 或 decimaluintlong、ulong、float、double 或 decimallongfloat、double 或 decimalcharushort、int、uint、long、ulong、float、double 或 decimalfloatdoubleulongfloat、double 或 decimal2var类型数据隐式转换ovar定义的变量的数据类型是由赋值的数据决定的。如var Name=”Johnson”,此时变量Name就是字符串类型,进行了隐式转换。1 var intNum=250; 2 int i=intN

18、um; /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.1

19、4,造成信息丢失2.4.3 使用Convert类转换o.Net Framework提供了很多类库,其中System.Convert类就是专门进行类型转换的类,通过Convert类提供的方法实现各种基本数据类型间的转换。Convert类的常用方法有:方法说明ToBoolean将指定的值转换为等效的布尔值。 ToChar将指定的值转换为 Unicode 字符。 ToDateTime将指定的值转换为 DateTime。 ToDecimal将指定值转换为 Decimal 数字。 ToDouble将指定的值转换为双精度浮点数。 ToInt16将指定的值转换为 16 位有符号整数。 ToInt32将指定的

20、值转换为 32 位有符号整数。 ToString将指定值转换为其等效的 String 表示形式。 例如:String MyString=”true”;Bool MyBool=Convert.ToBoolean(MyString);/ 将String转换为Boolean型,MyBool=trueString newString=”123456789”;Int MyInt=Convert.ToInt32(newString); /将字符串转换为数字值,MyInt=123456789.【范例2-5】隐式转换、显式转换使用举例在Visual Studio 2008中新建C#控制台程序,项目名为Type

21、Convert;在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型变量rNa

22、me隐式转换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 in

23、t 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()方法:数值类型的To

24、String()方法可以将数值型数据转换为字符串;(2) Parse()方法:数值类型的Parse()方法可将字符串转换为数值型,如字符串转换为整型使用int.Parse(string);字符串转换为双精度浮点型使用double.Parse(string)等。例如:1 int num1 = 25;2 string str1 = num1.ToString();/num1的ToString()方法将num1转为string赋给str13 string str2 = 38;4 int num2 = int.Parse(str2); /int.Parse()方法将字符串str2转换为int类型5 s

25、tring 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简单数据类型如整型、字符串类型等变量都只能存储一个值,如需要存储多个相同类型的数据, 可以使用数组。使用枚举,可以避免不合理的赋值,使程序更加合理和安全。本节讲

26、解数组和枚举的使用。2.5.1 数组的定义和使用o数组是一个经过索引的对象集合。一维对象数组的声明如下:数据类型数组的大小或容量 数组名; 其中中的数组的大小或容量可以省略。如下所示:int5 array1 /声明有五个数组元素的数组;或int array1array1 = new int5; /和上面数组声明等价;声明过的数值型数组中的数组元素默认值为零,引用类型数值中的数组元素的默认值为 null,可以在创建数组的同时初始化数组,如下所示:int array1 = new int 1, 3, 5, 7, 9 ; /有5个元素的数组,初值分别为1, 3, 5, 7, 9或int array1

27、 = 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的同时初始化32.5.2 Array类oSystem.Array类提供了创建、操作、搜索和排序数组的许多静态方法供程序调用,它是所有数组类型的抽象基类,不能直接从System.Array显示地

28、派生自己的数组类型。Array类常用的方法如下:方法名功能Clear清除将 Array 中的元素值Copy将一个 Array 的一部分元素复制到另一个 Array 中CopyTo将当前一维 Array 的所有元素复制到指定的一维 Array 中。Find搜索与指定谓词定义的条件匹配的元素,返回整个 Array 中的第一个匹配项。FindAll检索与指定谓词定义的条件匹配的所有元素。FindIndex搜索与指定谓词定义的条件匹配的元素,返回 Array 或其某个部分中第一个匹配项的从零开始的索引。GetLength获取Array 的指定维中的元素数。GetValue获取当前 Array 中指定元

29、素的值。IndexOf返回一维 Array 或部分 Array 中某个值第一个匹配项的索引。Initialize通过调用值类型的默认构造函数,初始化值类型 Array 的每一个元素。Reverse反转一维 Array 或部分 Array 中元素的顺序。SetValue将当前 Array 中的指定元素设置为指定值。Sort对一维 Array 对象中的元素进行排序。ToString返回表示当前 Object 的 String。o【范例2-6】 利用Array类的静态方法实现数组排序和反转。o 在Visual Studio 2008中新建C#控制台程序,项目名为“ArrayMethod”;o 在Pr

30、ogram.cs的Main 方法中输入以下如下代码(代码2-6.txt)。2.5.4 匿名数组o匿名数组就是隐藏类型的数组,这和匿名类型相同,不同的是类型为数组。匿名数组的语法和前面类似,就是用var替换具体的数据类型,例如:var array1 =new1,2,3,4,5; /intvar arry1 = new 1, 1, 5, 2, 2.5 ; /doublevar arry3 = new “abc”,“bcd”,“dsd” ; /string使用 匿名数组时,数组的内容一定是可以相互转换的,如var array4 = new “abc”,1,4,“ab” ; 是错误的,因为字符串和数值

31、不能实现自动的转换功能。2.5.5 枚举的定义和使用o枚举是一组已经命名的数值常量,用来定义一组具有特定值的数据类型,是便于记忆的符号。使用此数据类型可使代码更具可读性,还可降低将非法值或意外值赋给该变量的可能性。使用关键字enum定义枚举,语法如下: enum 枚举名称枚举对象例如,定义一个代表星期的枚举类型的变量opublic enum DayOfWeek /定义枚举名称 Monday, Tuesday, Wednesday, Thursday, Friday, Sunday /定义枚举对象的枚举值;; DayOfWeek ThisWeek; /定义了一个枚举类型的实例变量oSee you later!2.7 跟我上机o定义一个二维数组用于存储学生的学号、姓名和C#课程的考试成绩,然后输入学号、姓名和C#考试成绩,在C#中编写一个控制台应用程序,实现按C#课程考试成绩的升序和降序分别输出成绩单。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号