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

上传人:tia****nde 文档编号:2712935 上传时间:2019-11-29 格式:PPT 页数:49 大小:150KB
返回 下载 相关 举报
C#程序开发基础-C#语法入门.ppt_第1页
第1页 / 共49页
C#程序开发基础-C#语法入门.ppt_第2页
第2页 / 共49页
C#程序开发基础-C#语法入门.ppt_第3页
第3页 / 共49页
点击查看更多>>
资源描述
第2章 C#程序开发基础C#语法入门, 数据类型 常量和变量 运算符和表达式 类型转换 数组和枚举,2.1 数据类型,所谓数据类型,就是指数据的种类。在应用程序中,要使数据能被计算机识别并处理,需要将数据分为不同的类型,这样的好处是存储和计算方便。比如在对姓名和地址的处理中需要使用字符,在对货币和数量的处理中又需要使用数字或不同精度的小数,这些数据都是不同类型的数据。如姓名是“张三”为字符型、年龄是25为整型等。为什么要定义数据类型呢?之所以要定义数据类型,是因为计算机是没有思维的, 你只有告诉它,他才知道这是什么。比如你定义“int a”,它才知道a是一个整数, 否则计算机就识别不出来它是个什么东西而出错。,2.1.1 值类型和引用类型概述,C#的数据类型分为值类型、引用类型和指针类型(Pointer Type)3大类。 值类型包括简单类型、结构类型和枚举类型。 引用类型包括类类型、接口类型、委托类型和数组类型。 指针类型只能用于不安全模式。 值类型的数据存储在内存的堆栈中,可以提供快速访问。如果变量是值类型的,这个变量就包含实际数据,在一个独立的内存区域保存自己的值,如果在代码中修改其值后,在内存中会保存修改后的值。C#中大多数基本数据类型如:整型、字符型、浮点型、布尔型等都属于值类型,结构、枚举也属于值类型。,引用类型指向存储在内存堆中的数据的指针或引用。与纯粹的地址不同,引用总是指向一个对象,而且这个对象具有指定的类型,并且在堆上分配了地址。字符串、数组、接口、类都属于引用类型。,2.1.2值类型,C#语言的值类型包括整数类型、浮点数类型、布尔类型、字符类型等简单类型以及枚举类型和结构类型。下面介绍简单类型,枚举在2.5节中介绍,结构在4.4节中介绍。,整数类型,整数类型的变量值为整数。计算机语言提供的整数类型的值总是在一定范围之内。根据数据在计算机内存中所占的位数来划分,C#有8种整数类型的数据,这些数据及其在计算机中表示整数的范围如下表所示。,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】,已知圆的半径为12厘米,计算圆的面积。 在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 常量与变量,常量和变量代表在程序中的数据,是程序运行不可缺少的一部分,下面我们介绍常量和变量的使用。,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作为字符串数据被编译,【范例2-2】 定义常量和变量,熟悉常量、变量的使用。,第2章 C#程序开发基础C#语法入门, 数据类型 常量和变量 运算符和表达式 类型转换 数组和枚举,2.3 运算符和表达式,2.3.1 一元运算符,一元运算符的操作数只有一个。 常见的一元运算符包括自加运算符“+”、自减运算符“-”和逻辑非“!”。+可将操作数加1,-可将操作数减1,逻辑非是将表达式的值取反。自加、自减运算符在表达式前和表达式后的结果是不一样的, 自加和自减运算符其实是二元运算符的简化写法n+;等价于n=n+1;, C#中还有其他的简化写法,如下表所示。 简化运算符等价表达式简化运算符等价表达式n+和+n,2.3.2 二元运算符,二元运算符就是需要两个操作数参与的运算符,我们很熟悉的加减乘除四则运算的符号“+”、“-”、“*”、“/”就是二元运算符。如“3+8”,“+”运算符的两个操作数分别是3和8。 比较运算符(结果是逻辑性型,即True或 False)比较一个数是否大于另一个数 逻辑运算符(结果是逻辑型)&逻辑“与”两个操作数都为真时结果为”真”,其余情况结果为”假”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 运算符优先级,表达式有多个运算符时,表达式的求值顺序由运算符的优先级决定:先取优先级较高的运算符进行计算,将运算的结果再运用于优先级较低的运算符。也遵从算术运算的“先乘除后加减”这样的规则,可以用圆括号“()”改变运算的优先次序。C#运算的优先级如下,越上面优先级越高,如果一个表达式中出现同一个优先级的运算符,运算顺序取决于其结合性。结合性指运算符在表达式中从左到右或从右到左的运算顺序。,第2章 C#程序开发基础C#语法入门, 数据类型 常量和变量 运算符和表达式 类型转换 数组和枚举,2.4 类型转换,在输出结果时经常把整型、浮点型等类型转换为字符串,不同类型的数据进行运算时需要转换为同一类型才能正常计算,所有操作过程中经常涉及到数据类型之间的转换。C中数据类型的转换可以分为两类:隐式转换和显式转换。,2.4.1 隐式转换,隐式转换,就是系统默认的、不需要加以声明就可以进行的转换。例如: short st=250; int i=st; /将短整型隐式转换成整型 在C#没有引入var类型的变量之前,隐式转换仅存在于数值类型的数据之间,引入var类型之后,var定义的变量可以实现隐式数据转换。,1数值类型数据间的隐式转换,隐式数据类型转换适用于数值类型的数据之间,如整型数据(int)可以隐式转换为浮点型(float)和双精度型(double)数据;浮点型(float)可以隐式转换为双精度型(double)数据。隐式数据类型转换遵循以下规则才能实现。,2var类型数据隐式转换,var定义的变量的数据类型是由赋值的数据决定的。如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 显式转换显式,转换又叫强制类型转换,需要用户明确地指定转换的类型。通过显式数据转换,可以把取值范围大的数据转换为取值范围小的数据。显式转换可以发生在表达式的计算过程中,可能引起信息丢失,例如下面代码把float类型的变量pi强制转为int,小数部分的信息就丢失了。 float pi=3.14f; /定义一个单精度的实数 int i=(int)pi; /将单精度强制转换为整型行计算,i的值是3,不是3.14,造成信息丢失,2.4.3 使用Convert类转换,.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 装箱和拆箱,拆箱是把“引用”类型转换成“值”类型,装箱是把“值”类型转换成“引用类型”,是数据类型转换的一种特殊应用。有时某些方法的参数要求使用“引用”类型,而想把“值”类型的变量通过这个参数传入,就需要使用这个操作 例如。 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 数值和字符串之间的转,C#中字符串和数值之间经常互相转换,下面介绍一下二者之间的转换方法。 (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 数组和枚举,简单数据类型如整型、字符串类型等变量都只能存储一个值,如需要存储多个相同类型的数据, 可以使用数组。使用枚举,可以避免不合理的赋值,使程序更加合理和安全。本节讲解数组和枚举的使用。,2.5.1 数组的定义和使用,数组是一个经过索引的对象集合。一维对象数组的声明如下: 数据类型数组的大小或容量 数组名; 其中中的数组的大小或容量可以省略。如下所示: 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;,二维数组,声明二维数组的语法是: 数据类型 , 数组名; 例如: 1 int, array2D = new int2,3; / 声明二维数组array2D 2 int, array2D2 = 1, 2, 3, 4, 5, 6 ; /声明二维数组array2D2的同时初始化 3,2.5.2 Array类,System.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将当前 Array 中的指定元素设置为指定值。Sort对一维 Array 对象中的元素进行排序。ToString返回表示当前 Object 的 String。,【范例2-6】 利用Array类的静态方法实现数组排序和反转。 在Visual Studio 2008中新建C#控制台程序,项目名为“ArrayMethod”; 在Program.cs的Main 方法中输入以下如下代码(代码2-6.txt)。,2.5.4 匿名数组,匿名数组就是隐藏类型的数组,这和匿名类型相同,不同的是类型为数组。匿名数组的语法和前面类似,就是用var替换具体的数据类型,例如: var array1 =new1,2,3,4,5; /int var arry1 = new 1, 1, 5, 2, 2.5 ; /double var arry3 = new “abc”,“bcd”,“dsd” ; /string使用 匿名数组时,数组的内容一定是可以相互转换的,如var array4 = new “abc”,1,4,“ab” ; 是错误的,因为字符串和数值不能实现自动的转换功能。 。,2.5.5 枚举的定义和使用,枚举是一组已经命名的数值常量,用来定义一组具有特定值的数据类型,是便于记忆的符号。使用此数据类型可使代码更具可读性,还可降低将非法值或意外值赋给该变量的可能性。 使用关键字enum定义枚举,语法如下: enum 枚举名称枚举对象,例如,定义一个代表星期的枚举类型的变量,public enum DayOfWeek /定义枚举名称 Monday, Tuesday, Wednesday, Thursday, Friday, Sunday /定义枚举对象的枚举值; ; DayOfWeek ThisWeek; /定义了一个枚举类型的实例变量,See you later!,2.7 跟我上机,定义一个二维数组用于存储学生的学号、姓名和C#课程的考试成绩,然后输入学号、姓名和C#考试成绩,在C#中编写一个控制台应用程序,实现按C#课程考试成绩的升序和降序分别输出成绩单。,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!