Download presentation
Presentation is loading. Please wait.
1
第2章 C#程序设计基础
2
2.1 创建第一个C#程序 C#是微软公司专门为.NET平台量身定做的编程语言。 通过C#能够创建任何一种.NET应用程序
Windows程序 Web程序 Windows服务 Web服务 DLL类库等。
3
2.1 创建第一个C#程序 【例2-1】 创建一个个C#程序。 要求:通过控制台输出“欢迎学习C#语言!”。
4
2.1 创建第一个C#程序 操作步骤 : 启动Visual Studio 2005,创建新项目
5
2.1 创建第一个C#程序 操作步骤 : IDE自动创建一个控制台应用程序的框架,添加如下代码: 启动调试。
static void Main(string[] args) { Console.WriteLine("欢迎学习C#语言!"); }
6
2.2 语法简介 2.2.1 数据类型 C#的数据类型主要分为两大类: 值类型的变量直接包含其数据,而引用类型的变量则存储对象引用。
2.2 语法简介 数据类型 C#的数据类型主要分为两大类: 值类型(Value Type) 引用类型(Reference Type) 值类型的变量直接包含其数据,而引用类型的变量则存储对象引用。 对于值类型,每个变量都有自己的数据副本,对于一个变量的操作不可能影响到另外的变量。对于引用类型,两个变量可能引用同一对象,因此对于一个变量的操作可能影响另一个变量所引用的对象。 C#语法规定:声明变量时要指定变量的数据类型。
7
2.2 语法简介 1. 值类型 值类型包括以下3种: 1)简单类型 简单类型主要包括整数类型、布尔类型、字符类型和浮 点类型等。
2.2 语法简介 1. 值类型 值类型包括以下3种: 简单类型 枚举类型 结构类型 1)简单类型 简单类型主要包括整数类型、布尔类型、字符类型和浮 点类型等。 int j=214; //定义一个int类型变量 int i= ; //定义一个int类型变量 float abc=3.45; //定义一个float类型变量 char bc=”A”; //定义一个char类型变量
8
2.2 语法简介 2)枚举类型 枚举类型用来对一组在逻辑上密不可分的整数值提供记忆符号。声明枚举类型的关键字是enum。例如:
2.2 语法简介 2)枚举类型 枚举类型用来对一组在逻辑上密不可分的整数值提供记忆符号。声明枚举类型的关键字是enum。例如: 上面的语句声明了一个WeekDay类型的枚举变量,拥有7个元素,默认的第一个元素(即Sunday)值为0,第2个元素值为1,依次递增。 enum WeekDay{Sunday,Monday,Tuesday,Wednesday, Thursday,Friday,Saturday}
9
2.2 语法简介 2)枚举类型 也可以改变第一个元素的值,但是必须是int类型。如下:
2.2 语法简介 2)枚举类型 也可以改变第一个元素的值,但是必须是int类型。如下: 此时Sunday的值为11,Monday的值为12,依次递增。枚举类型以int类型作为默认数据类型。 enum WeekDay{Sunday=11,Monday,Tuesday,Wednesday, Thursday,Friday,Saturday}
10
2.2 语法简介 【例2-2】 使用枚举类型。 enum WeekDay { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; static void Main(string[] args) { Console.WriteLine(WeekDay.Monday); WeekDay myWeekDay = WeekDay.Saturday; Console.WriteLine(myWeekDay); }
11
2.2 语法简介 3)结构类型 结构类型将一组相关的信息存放在一起。把一系列相关的变量组织成为一个单一实体的过程被称为生成结构的过程,这个单一的实体的类型被称为结构类型。 结构类型通过关键字struct声明。
12
2.2 语法简介 【例2-3】 使用结构类型。 struct student { public string name; //定义学生姓名
2.2 语法简介 【例2-3】 使用结构类型。 struct student { public string name; //定义学生姓名 public string sex; //定义学生性别 public string age; //定义学生年龄 } static void Main(string[] args) student myStudent; //声明结构类型变量myStudent myStudent.name = "张华"; myStudent.sex = "男"; myStudent.age = "19"; Console.WriteLine("姓名:{0}\n性别:{1}\n年龄:{2}\n", myStudent.name, myStudent.sex, myStudent.age);
13
2.2 语法简介 2. 引用类型 引用类型包括以下5种: object类型 string类型 代理类型 接口类型 数组类型
14
2.2 语法简介 1)object类型 object类型是一种根类型,C#中所有的类都直接或间接的继承object类,因此object类型的变量可以赋予任何类型的值。例如: 下面3种object类的方法,在其它类中同样可用: equals():判断两个object实例是否相等。 getType():获取当前实例的类型。 Tostring():返回当前实例的字符串。 object obj; //定义一个object类型的变量 obj=245; //将int型数值赋给该变量 obj=”欢迎”; //将string型值赋给该变量
15
2.2 语法简介 2)string类型 string类型是一种专门用来操作字符串的引用类型。 例如:
2.2 语法简介 2)string类型 string类型是一种专门用来操作字符串的引用类型。 例如: 在C#中使用“+”作为字符串连接符,例如: string strC=strA+strB; //将字符串 ”欢迎”与字符串”123”相连,结果为”欢迎123” string strA=”欢迎”; //定义一个string类型的变量,并赋值 string strB=”123”;
16
2.2 语法简介 2)string类型 string类型的相等与不相等运算符分别是==和!=,例如:
2.2 语法简介 2)string类型 string类型的相等与不相等运算符分别是==和!=,例如: string strD=”abcdefg”; string strE=”cdefg”; string strF=”abcdefg”; strD==strF; strE!=strF;
17
2.2 语法简介 3)代理类型 在C#中可以通过delegate关键字声明一个代理类型的变量,该变量可以指代一个函数或者方法。
2.2 语法简介 3)代理类型 在C#中可以通过delegate关键字声明一个代理类型的变量,该变量可以指代一个函数或者方法。 delegate int a(); //定义一个代理变量 public int sayHello() //定义一个方法 { Console.WriteLine("欢迎你!"); return 0; } static void Main(string[] args) Program p = new Program(); //定义一个Program类的实例 a myA = new a(p.sayHello); //用a代理变量定义另一个代理变量,并赋值 myA(); //调用代理变量
18
2.2 语法简介 4)接口类型 接口是一组包含函数方法的数据集合。通过接口类型变量可以实现类似于类的多重继承的功能。
2.2 语法简介 4)接口类型 接口是一组包含函数方法的数据集合。通过接口类型变量可以实现类似于类的多重继承的功能。 通过关键字interface关键字可以声明接口类型变量,在接口中可以有0或多个元素,这些元素都是public的。 接口也可以继承一个或多个父接口,子接口继承所有父接口中的属性和方法。
19
2.2 语法简介 5)数组类型 数组是一组类型相同的相关数据的集合,将这些数据按数组存储,使它们具有统一的名称,这样就可以省去为几十个、甚至成百上千个数据取变量名的麻烦,而且使用起来相当灵活方便。数组通过下标进行访问,下标的索引从0开始,数组中所有的元素的数据类型必须相同。
20
2.2 语法简介 5)数组类型 一维数组的声明和初始化语法如下: 数据类型[] 数组名=new 数据类型[数组值]
2.2 语法简介 5)数组类型 一维数组的声明和初始化语法如下: 数据类型[] 数组名=new 数据类型[数组值] int[ ] age=new int[4]{18,17,19,17}; string[ ] name=new string[3]{“Tom”,”Rose”,”Mike”}; int[ ] age=new int[ ]{18,17,19,17}; string[ ] name=new string[ ]{“Tom”,”Rose”,”Mike”}; int[ ] age={18,17,19,17}; string[ ] name={“Tom”,”Rose”,”Mike”};
21
2.2 语法简介 数据类型转换 在应用程序的开发中经常需要在各种类型的简单变量之间进行数据类型转换,这种转换分为两种方式,一个是隐式转换,一个是显式转换。 隐式转换 隐式转换不需要编写任何代码,由编译器自动进行类型转换。取值范围比较小的类型可以隐式的转换到取值范围大的那个类型上。按照如下的类型顺序进行隐式转换。例如:byte类型的数据可以隐式的转换为int类型,反之则不可以。 byte → short → int → long → float → double byte bData = 10; int iData = bData; //数据类型由byte型转换为int型
22
2.2 语法简介 显式转换 显式转换也称强制转换,明确要求编译器把某种类型转化为另外一种类型。
2.2 语法简介 显式转换 显式转换也称强制转换,明确要求编译器把某种类型转化为另外一种类型。 使用显示转换时,不用按照隐式转换中的类型顺序,只要求类型之间具有一定的联系即可(比如都是数字),例如: 显示转换可能会造成数据丢失,使用时要特别注意。 int iData = 20 ; byte bData = (byte)iData ;
23
2.2 语法简介 另外某些情况下,经常需要将字符串转换为数值,或者将数值装换为字符串,方法如下: 将数值转换为字符串
2.2 语法简介 另外某些情况下,经常需要将字符串转换为数值,或者将数值装换为字符串,方法如下: 将数值转换为字符串 每个类都有一个ToString()方法,通过这个方法可以方便的将数值转换为字符串,例如: 将字符串转换为数值 将字符串转换为数值可以通过Parse()函数或者Convert类,例如: int iData=20; string sData=iData.ToString(); // sData值为”20” string sData=”20”; //定义一个字符串变量 float fData=float.Parse(sData); //将字符串类型转换为float型 int iData=Convert.ToInt16(sData); //将字符串类型转换为int型
24
2.2 语法简介 变量和常量 变量可以看做是内存中存储数据的盒子,它所存储的数据可以根据需要随时改变。在C#语言中声明变量的语法如下: 数据类型 变量名 例如: int intSum; string strName;
25
2.2 语法简介 C#语言对大小写是敏感的,同样一个字母,大小写代表两个意思。变量的命名规范如下: 变量必须以字母或下划线开头。
2.2 语法简介 C#语言对大小写是敏感的,同样一个字母,大小写代表两个意思。变量的命名规范如下: 变量必须以字母或下划线开头。 变量名中不能包含空格、标点符号和运算符等符号 变量名不能与C#中的关键字重名。
26
2.2 语法简介 常量用来存储程序中经常需要处理的固定数据,它与变量的最大区别是,一旦定义了某个常量,就不能再更改其值。在C#中使用const关键字来声明常量,语法如下: const 数据类型 常量名 例如: public const string public const int intType=234 ;
27
2.2 语法简介 运算符 运算符按照功能区分,主要分为算数运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、条件运算符等。 1. 算术运算符
28
2.2 语法简介 2. 关系运算符 3.逻辑运算符
29
2.2 语法简介 4. 三元运算符 三元运算符(?:)实际上是一种缩写的条件语句。其结构如下:A ?:B:C
2.2 语法简介 4. 三元运算符 三元运算符(?:)实际上是一种缩写的条件语句。其结构如下:A ?:B:C 即,若表达式A的值为true,则返回B的值,否则返回C的值 bool bSex = true; string sSex = bSex ? “男” : “女” ; // bSex的值为true, // 因此返回值为”男”
30
2.2 语法简介 2.2.5 条件语句 1. if 语句 if语句是最常见的条件语句,分为单条件语句和多条件语句两种。
2.2 语法简介 条件语句 条件语句也称为选择语句或分支语句。其作用是:根据不同条件,执行不同的代码。 条件语句主要有if语句和switch语句两种。 1. if 语句 if语句是最常见的条件语句,分为单条件语句和多条件语句两种。
31
2.2 语法简介 1)单条件语句 单条件语句的语法有以下两种:条件语句主要有if语句和switch语句两种。 if (条件) 执行语句; 或
2.2 语法简介 1)单条件语句 单条件语句的语法有以下两种:条件语句主要有if语句和switch语句两种。 if (条件) 执行语句; 或 if (条件) { 执行语句1; } [ else 执行语句2; } ]
32
2.2 语法简介 1)单条件语句 单条件语句的语法有以下两种:条件语句主要有if语句和switch语句两种。 if (条件) 执行语句; 或
2.2 语法简介 1)单条件语句 单条件语句的语法有以下两种:条件语句主要有if语句和switch语句两种。 if (条件) 执行语句; 或 if (条件) { 执行语句1; } [ else 执行语句2; } ]
33
2.2 语法简介 【例2-5】 单条件语句。 int n; Console.WriteLine("请输入身高");
2.2 语法简介 【例2-5】 单条件语句。 int n; Console.WriteLine("请输入身高"); n = int.Parse(Console.ReadLine()); if (n > 110) { Console.WriteLine("请购买全票!"); } else Console.WriteLine("可以购买半票!");
34
2.2 语法简介 2)多条件语句 多条件语句用于对多个条件进行判断,可以看成是单条件的嵌套。 if (条件1) { 执行语句1; }
2.2 语法简介 if (条件1) { 执行语句1; } [ else if (条件2) 执行语句2; } ] [ …… else if (条件n) 执行语句n; [ else 执行语句n+1; 2)多条件语句 多条件语句用于对多个条件进行判断,可以看成是单条件的嵌套。
35
2.2 语法简介 2. switch 语句 switch语句实现的功能类似于多条件的if语句。基本格式如下: switch (表达式) {
2.2 语法简介 2. switch 语句 switch语句实现的功能类似于多条件的if语句。基本格式如下: switch (表达式) { case 常量表达式1: 语句1; break; case 常量表达式2: 语句2; break; …… case 常量表达式n: 语句n; break; default: 缺省语句; break; }
36
2.2 语法简介 【例2-6】 switch语句。 Console.WriteLine("请选择午饭种类:");
2.2 语法简介 Console.WriteLine("请选择午饭种类:"); Console.WriteLine("1.炒面"); Console.WriteLine("2.份饭"); Console.WriteLine("3.包子"); Console.WriteLine("请输入午饭的代码(1-3)"); int n = int.Parse(Console.ReadLine()); switch (n) { case 1: Console.WriteLine("你选择的是1.炒面"); break; case 2: Console.WriteLine("你选择的是2.份饭"); case 3: Console.WriteLine("你选择的是3.包子"); default: Console.WriteLine("选择错误"); } 【例2-6】 switch语句。
37
2.2 语法简介 2.2.6 循环语句 在程序设计时,如果一段程序需要反复执行,可以使用循环语句以简化操作。 C#提供了四种循环语句:
2.2 语法简介 循环语句 在程序设计时,如果一段程序需要反复执行,可以使用循环语句以简化操作。 C#提供了四种循环语句: for语句 do语句 while语句 foreach语句
38
2.2 语法简介 1. for 循环 for语句是C#中使用范围最广泛的循环语句,通常用于遍历操作。
2.2 语法简介 1. for 循环 for语句是C#中使用范围最广泛的循环语句,通常用于遍历操作。 所谓遍历,就是循环访问某个多值类型中的所有成员,例如输出某个数组中的所有元素的值。另外for循环语句也可以用于进行N次操作。 for语句的循环过程如下: 计算表达式1,为循环控制变量赋初值; 判断表达式2的值是否为true,若为true则执行循环体; 执行表达式3,改变循环控制变量的值; 判断表达式2的值是否为true; 依次类推,直到表达式2的值为false,则退出for循环。 for (表达式1 ; 表达式2 ; 表达式3) { 循环体; } 表达式1设置循环控制变量并赋初值;表达式2设置循环执行条件;表达式3设置某种规律以修改循环控制变量的值。
39
2.2 语法简介 【例2-7】 for语句。 要求:使用for循环求1+2+3+…+100的值。
2.2 语法简介 【例2-7】 for语句。 要求:使用for循环求1+2+3+…+100的值。 int i, sum = 0; // i为循环控制变量,sum为数据相加之和 for (i=1; i <= 100; i++) { sum += i; //即sum=sum+i Console.WriteLine(sum.ToString()); }
40
2.2 语法简介 2. do-while循环 for循环无论作为遍历循环,还是作为指定N次的循环,其循环次数是可以准确判断的。但是有的时候不清楚准确的循环次数,此时可以使用do-while循环,该循环体可以将循环语句至少执行一遍。基本语法格式是: do-while循环语句的循环过程如下: 首先执行循环体; 判断while条件是否为true,如果为true,则重新执行循环体,再判断while条件,依次类推,循环执行; 一旦while条件为false则跳出do-while循环。 do { 循环体; } while (条件) ;
41
2.2 语法简介 【例2-8】 do-while语句。 要求:产生一个50以内的随机整数,求从该数字开始 到50的所有数的和 。
2.2 语法简介 【例2-8】 do-while语句。 要求:产生一个50以内的随机整数,求从该数字开始 到50的所有数的和 。 Random r = new Random(); // 定义一个Random类的实例 r int intA, intB,intSum = 0; intA = Convert.ToInt32(r.Next(50)); // 通过r的Next方法获取不大于50的随机数 intB = intA; // 将随机数保存在intB变量内 do { intSum += intA; // intSum = intSum + intA intA++; // intA = IntA + 1 } while (intA <= 50); Console.WriteLine("随机数是" + intB + "," + intB + "至50之间数值之和是:" + intSum);
42
2.2 语法简介 3. while循环 while循环与do-while循环非常类似,区别在于将while条件放在的循环体之前,这样就会先判断while条件,只有while条件为true的情况下才会执行循环体。基本语法格式是: while (条件) { 循环体; }
43
2.2 语法简介 【例2-9】 while语句。 要求:产生一个50以内的随机整数,求从数值开始到50的所有数的和。 。
2.2 语法简介 【例2-9】 while语句。 要求:产生一个50以内的随机整数,求从数值开始到50的所有数的和。 。 Random r = new Random(); //定义一个Random类的实例 r int intA, intB, intSum = 0; intA = Convert.ToInt32(r.Next(50)); //通过r的Next方法获取 //不大于50的随机数 intB = intA; //将随机数保存在intB变量内 while (intA <= 50) { intSum += intA; //intSum = intSum + intA; intA++; //intA = IntA + 1 } Console.WriteLine("随机数是" + intB + "," + intB + "至50之间数值之和是:" + intSum);
44
2.2 语法简介 4. foreach 循环 同C/C++相比,foreach语句是C#语言中提供的一种新的循环语句。作用是提供一种简单的方法来循环访问数组或集合中的所有元素。基本语法格式是: foreach (循环变量数据类型 循环变量 in 数据集合) { 循环体; }
45
2.2 语法简介 【例2-10】 foreach语句。。 要求:使用foreach循环语句,显示数组中的所有元素。
2.2 语法简介 【例2-10】 foreach语句。。 要求:使用foreach循环语句,显示数组中的所有元素。 static void Main(string[] args) { int[] arrAll = new int[] { 1, 2, 3, 4, 5 }; foreach (int i in arrAll) Console.WriteLine(i); }
46
2.3 面向对象的基本概念 2.3.1 类和对象 C#语言是一种面向对象的语言,就是把程序中的各种实体当做实际生活中的事物的一种思维方式。
2.3 面向对象的基本概念 类和对象 C#语言是一种面向对象的语言,就是把程序中的各种实体当做实际生活中的事物的一种思维方式。 面向对象的语言通过“类”这个概念描述各种对象。每个类还有自己的属性、方法和事件。 例如: 汽车有很多类型,也有很多品牌,但是我们可以将其抽象为“汽车”这个概念,此时“汽车”就是一个类。 汽车的颜色、排量等属于汽车的属性;汽车可以开动、载人等属于汽车的方法;汽车发生撞车属于汽车的事件。
47
2.3 面向对象的基本概念 2.3.1 类和对象 类使用关键字class定义,class关键字后面跟着类的名称。定义类的基本语法格式是:
2.3 面向对象的基本概念 类和对象 类使用关键字class定义,class关键字后面跟着类的名称。定义类的基本语法格式是: 定义类的目的是使用类,但是类不能直接使用,必须先进行实例化。将类进行实例化的语法格式是: 其中,new是创建新对象的运算符。 class 类名 { 定义类的各种成员,如数据、函数等 } 类名 实例名 = new 类名();
48
2.3 面向对象的基本概念 命名空间 命名空间(namespace)是存放类的容器,提供了一种组织相关类和其他类型的方式。与文件或组件不同,命名空间是一种逻辑组合,而不是物理组合。 在C#文件中定义类时,可以把它包括在命名空间定义中。以后,在定义另一个类,在另一个文件中执行相关操作时,就可以在同一个命名空间中包含它,创建一个逻辑组合,告诉使用类的其他开发人员这两个类是如何相关的以及如何使用它们。 定义类的目的是使用类,但是类不能直接使用,必须先进行实例化。将类进行实例化的语法格式是: 其中,new是创建新对象的运算符。
49
2.3 面向对象的基本概念 修饰符 修饰符用于限定类型以及类型成员的申明。C#中有13种修饰符,按功能可分为三类:存取修饰符、类修饰符和成员修饰符。
Similar presentations