第章C语言基础_第1页
第章C语言基础_第2页
第章C语言基础_第3页
第章C语言基础_第4页
第章C语言基础_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

1、第第2章章 C#语言基础语言基础本章目标q掌握C#语言的结构q掌握C#语言的数据类型q掌握常量与变量的声明与使用q掌握常用的流程控制q理解并掌握C#面向对象编程中的常用技术q掌握简单的异常处理C#语言简介q.NET FrameworkqC#的主要特点qC#主要功能.NET FrameworkqC#语言是微软公司为语言是微软公司为.NET平台量身定做的一种编平台量身定做的一种编程语言。程语言。q.NET Framework的出现使得程序员只用专注于程的出现使得程序员只用专注于程序设计本身,而不用把精力过多地放在语言的学序设计本身,而不用把精力过多地放在语言的学习上。习上。q.NET Framew

2、ork是是.NET平台的基础框架,它提平台的基础框架,它提供了跨语言的协同工作能力,其强大的能力来自供了跨语言的协同工作能力,其强大的能力来自于公共语言运行时(于公共语言运行时(CLR)和基本类库。和基本类库。C#的主要特点q简单易学简单易学q兼容性兼容性q面向对象性面向对象性q安全处理安全处理C#主要功能q设计设计Windows应用程序应用程序q自定义自定义Windows控件库控件库q设计控制台应用程序设计控制台应用程序q设计智能设备应用程序设计智能设备应用程序q设计设计ASP.NET Web应用程序应用程序q设计设计ASP.NET Web Servicesq设计设计ASP.NET Web

3、移动应用程序移动应用程序q自定义自定义Web控件控件C#程序结构q引入命名空间引入命名空间q程序入口点程序入口点q注释注释程序示例-引入命名空间using System;namespace FirstProject class Program static void Main(string args) / / 提示用户输入提示用户输入 Console.WriteLine(请输入您的姓名请输入您的姓名); String strName = Console.ReadLine(); Console.WriteLine(Hello: 0, strName); Console.ReadLine(); 引

4、入引入System命名空间命名空间思考:如果不引入思考:如果不引入System命命名空间,程序该怎么修改?名空间,程序该怎么修改?程序入口点 Main Main方法是程序的入口点,一个方法是程序的入口点,一个C#C#程序中只能有一个入口点。程序中只能有一个入口点。声明声明Main方法需要注意以下几点。方法需要注意以下几点。 (1)Main方法是程序的入口点,程序控制在该方法中开始和结方法是程序的入口点,程序控制在该方法中开始和结束。束。 (2)该方法在类或结构的内部声明,并且)该方法在类或结构的内部声明,并且必须为静态方法必须为静态方法,而,而不应为公共方法(在上面的示例中它接受默认访问级别不

5、应为公共方法(在上面的示例中它接受默认访问级别private)。)。 (3)可以具有)可以具有void或或int返回类型。返回类型。 (4)声明)声明Main方法时既可以使用参数,也可以不使用参数。方法时既可以使用参数,也可以不使用参数。 (5)参数可以作为从零开始索引的命令行参数来读取。)参数可以作为从零开始索引的命令行参数来读取。 (6)与)与C和和C+不同,程序的名称不会被当做第不同,程序的名称不会被当做第1个命令行参数。个命令行参数。 注释q/单行注释单行注释q /* 多行注释多行注释 */qXML文档注释文档注释 / / This class performs an importan

6、t function. / public class MyClass public static void Main() C#数据类型与变量q值类型与引用类型值类型与引用类型q常量与变量常量与变量q数据类型转换数据类型转换q枚举枚举q数组数组q字符串处理字符串处理q日期对象日期对象值类型与引用类型q值类型直接存储其值值类型直接存储其值,而引用类型存储对值的引用。q值类型存储在堆栈中值类型存储在堆栈中,而引用类型存储在托管堆上 引用类型主要有:引用类型主要有:类类型(类类型(class-typeclass-type)数组类型(数组类型(array-typearray-type)接口类型(接口类型

7、(interface-typeinterface-type)委托类型(委托类型(delegate-typedelegate-type)值类型包括:值类型包括:基本值类型基本值类型结构类型结构类型枚举类型枚举类型常量与变量q 变量变量被定义后,在程序执行阶段,会一直存储在被定义后,在程序执行阶段,会一直存储在内存中,变量的值可根据需要来改变。内存中,变量的值可根据需要来改变。q变量必须先声明才能使用。变量必须先声明才能使用。 int a; a=3; int a=3; int a=3,b=5;q变量有其作用域变量有其作用域q局部变量:仅在声明变量的范围内有效q静态变量:使用staticstatic

8、进行声明,在整个应用程序运行在整个应用程序运行期间一直存在期间一直存在常量与变量q常量常量必须在声明时进行赋值,并且赋值后不能被必须在声明时进行赋值,并且赋值后不能被修改。修改。const 数据类型标识符数据类型标识符 常量名常量名=表达式表达式; const double PI=3.1415926;数据类型转换 在一定条件下,将一种数据类型变为另一种数在一定条件下,将一种数据类型变为另一种数据类型据类型的过程称为类型转换。的过程称为类型转换。 q 隐式转换隐式转换:遵从由低级到高级转换的规则,不会发生数据丢失。例如,表达式16+A+3.1415926,首先A为char类型,先转换成整数65(

9、Unicode编码为65),在与16和3.1415926作加法运算,表达式的结果为double类型数据类型转换u显示转换显示转换q使用类型转换关键字使用类型转换关键字,语法格式如下: (类型标识符类型标识符)表达式表达式;q使用使用Convert类或类或Parse方法进行转换方法进行转换。qToString()方法()方法,可将任何一种数据类型转换为字,可将任何一种数据类型转换为字符串类型。符串类型。double d = 3.67;int i = (int)d;string s = 123;double d1 = Convert.ToDouble(s);double d2 = double.P

10、arse(s);枚举q是一种用户自定义的值类型用户自定义的值类型q声明枚举类型:声明枚举类型: enum 枚举名枚举名 枚举成员名称枚举成员名称1, 1, 枚举成员名称枚举成员名称2,2,;q说明说明:枚举成员的枚举值都默认为整型,且第一枚举成员的枚举值都默认为整型,且第一个成员的值默认为个成员的值默认为0 0,其他成员依次增加,其他成员依次增加1 1,也可也可以单独指定值以单独指定值;声明与引用枚举enum Weather Sunny, /默认值默认值0Cloudy, /默认值默认值1Rain, /默认值默认值2Snow, /默认值默认值3fog /默认值默认值4Weather bj ;bj

11、 = Weather.Sunny;/显示结果显示结果Console.WriteLine(bj); / 显示显示Sunny,而不是数字而不是数字0Console.WriteLine((int)bj); /显示数字显示数字0数组q数组是数组是一组具有相同类型和名称的变量的集合一组具有相同类型和名称的变量的集合,组成组成数组的这些变量称为数组元素。数组的这些变量称为数组元素。qC#C#数组元素的下标是数组元素的下标是从从0 0开始的。开始的。q数组元素的个数称为数组元素的个数称为数组的长度数组的长度。可以使用。可以使用ArrayArray类类的的LengthLength 属性。属性。q建立数组对象时

12、,建立数组对象时,数组长度必须使用常量而不能使用数组长度必须使用常量而不能使用变量变量。 int arr=new int3; /正确正确 int arr=new intn; /错误错误q二维数组的声明:二维数组的声明:qint, arr=new int3,4; /声明一个声明一个3行行4列的二维数列的二维数组组 字符串处理q字符串数组字符串数组 一个字符串可以看做是有一个个字符组成的数组,一个字符串可以看做是有一个个字符组成的数组,字符串的第一个字符索引为字符串的第一个字符索引为0 string MyString=“welcome!” Console.WriteLine(MyString0);

13、/第第1个字符个字符 Console.WriteLine(MyString4);/第第5个字符个字符q字符串合成字符串合成 使用运算符使用运算符“+” string str1=“hello”; string str2=“world”; string str=str1+str2”; 字符串处理q求长度求长度Length属性是描述字符串长度的属性属性是描述字符串长度的属性 string str=”welcome!”;int n=str.Length;那么那么n就得到就得到str字符串的长度为字符串的长度为8 字符串处理q大小写转换大小写转换qToUpper()方法是把字符串中所有的字母方法是把字符

14、串中所有的字母 都变成都变成大写大写 string str=”WelcomE”; str.ToUpper(); / str=“WELCOME”qToLower()方法是把字符串中所有的字母方法是把字符串中所有的字母 都变成都变成小写小写 str.ToLower(); /str= =”welcome”; 字符串处理q删除字符串前面或后面的空格删除字符串前面或后面的空格String myStr1=“ right ”;String myStr2=myStr1.Trim(); /mystr2=“right”q替换字符串替换字符串 Replace(str1,str2),将字符串中的,将字符串中的str1

15、子串替换为子串替换为str2string str=”welcome to Beijing!”; string newStr=MyString.Replace(“Beijing”,”Shangqiu”);字符串处理q求子串求子串SubString (int i,int j)方法是从方法是从str1字符串的字符串的n1个字个字符开始,截取长度为符开始,截取长度为n2的子串的子串 str1.SubString(n1,n2);例:例:string str1=“people”; string str2=str1.sub(0,3); /str2=“peo”字符串处理q获取位置获取位置 IndexOf(st

16、ring str)方法是从方法是从str1字符串找出字符串找出第第一次出现某子字符串的位置一次出现某子字符串的位置 string str1=”you are welcome”;int n=str1.IndexOf(“are”);那么那么n的值为的值为4; 字符串处理q字符串比较字符串比较 Compare(str1,str2)方法方法q静态方法,用于比较两个字符串是否相等,相等静态方法,用于比较两个字符串是否相等,相等返回返回0,否则返回,否则返回-1。例:例: int i=string.Compare(“yes”,”no”); /i=-1 int j=string.Compare(“yes”,

17、”yes”);/j=0日期对象qC#使用使用DateTime对象创建一个新的日期实例对象创建一个新的日期实例 DateTime BirthDay=new DateTime(2005,10,9);参数的顺序是年、月、日。可通过下面方法访问各参数的顺序是年、月、日。可通过下面方法访问各个部分个部分 int Day=BirthDay.Day; int Month=BirthDay. Month; int Year=BirthDay. Year;流程控制q选择语句选择语句q循环语句循环语句选择语句qIf语句语句qSwitch语句语句switch语句switch (控制表达式控制表达式) case 常量

18、表达式常量表达式1:语句块语句块1;break;case 常量表达式常量表达式2:语句块语句块2;break; case 常量表达式常量表达式n:语句块语句块n;break;default:语句块语句块n+1;break; 说明:说明: 控制表达式的类型可以使简单值控制表达式的类型可以使简单值类型、枚举类型或类型、枚举类型或string类型。类型。 每个每个case标签中常量表达式必标签中常量表达式必须属于或隐式转换成控制类型。须属于或隐式转换成控制类型。 每个每个case标签中的常量表达式标签中的常量表达式不能相同,否则会编译出错。不能相同,否则会编译出错。1.Switch语句中最多只能有一

19、个语句中最多只能有一个default标签标签流程控制-简单运算器staticstatic voidvoid Main( Main(stringstring args) args) doubledouble op1, op2, result = 0; op1, op2, result = 0; charchar c; c; ConsoleConsole.WriteLine(.WriteLine( 请输入第一个操作数请输入第一个操作数:); ); op1 = op1 = doubledouble.Parse(.Parse(ConsoleConsole.ReadLine();.ReadLine();

20、 ConsoleConsole.WriteLine(.WriteLine( 请输入运算符,必须是加(请输入运算符,必须是加(+ +),减(),减(- -),乘(,乘(* *),除(),除(/ /)中的一种)中的一种: : ); ); c = c = ConvertConvert.ToChar(.ToChar(ConsoleConsole.ReadLine();.ReadLine(); ConsoleConsole.WriteLine(.WriteLine( 请输入第二个操作数请输入第二个操作数:); ); op2 = op2 = doubledouble.Parse(.Parse(Consol

21、eConsole.ReadLine();.ReadLine();流程控制-简单运算器 switchswitch (c) (c) casecase +: : result = op1 + op2; result = op1 + op2; breakbreak; ; casecase -: : result = op1 - op2; result = op1 - op2; breakbreak; ; casecase * * : : result = op1 result = op1 * * op2; op2; breakbreak; ; casecase /: : whilewhile (op2

22、 = 0) (op2 = 0) ConsoleConsole.WriteLine(.WriteLine( 除数不能为,请重新输入第二个操作数:除数不能为,请重新输入第二个操作数: ); ); op2 = op2 = doubledouble.Parse(.Parse(ConsoleConsole.ReadLine();.ReadLine(); result = op1 / op2; result = op1 / op2; breakbreak; ; ConsoleConsole.WriteLine(.WriteLine(012=3012=3, op1, c, op2, result);, op

23、1, c, op2, result); ConsoleConsole.ReadLine();.ReadLine(); 循环语句q for语句语句q foreach语句语句q while语句语句q dowhile语句语句 for语句-冒泡排序 staticstatic voidvoid Main( Main(stringstring args) args) intint arr = arr = newnew intint 16, 25, 9,90,23 ; 16, 25, 9,90,23 ; intint temp; temp; forfor ( (intint i = 0; i i = 0;

24、i arr.Length-1arr.Length-1; i+); i+) forfor ( (intint j = 0; j j = 0; j arr arrj + 1j + 1) ) temp = arrj; temp = arrj; arrj = arrj + 1; arrj = arrj + 1; arrj + 1 = temp; arrj + 1 = temp; forfor ( (intint i = 0; i i = 0; i arr.Length; arr.Length; i+)i+) ConsoleConsole.WriteLine(.WriteLine(tt+arri);+a

25、rri); ConsoleConsole.ReadLine();.ReadLine(); foreach语句循环语句输出一个数组的所有元素值循环语句输出一个数组的所有元素值 static void Main(string args) int index = 1; string myArraymyArray = new string6 Pirlo, Ronaldo, Beckham, Kaka, Owen, Henry ; foreach (string arrarr in myArraymyArray) Console.WriteLine(第0个球员的名字是:1,index+,arrarr);

26、 Console.ReadLine(); 思考题q用数组保存学生成绩,要求:(1)将成绩进行等级划分为“不及格”“及格”“良好”“优秀”;(2)统计各个级别的学生人数;(3)输出属于各个级别学生的成绩。面向对象q面向对象的优点和特征面向对象的优点和特征q类的声明和实例化类的声明和实例化q类成员类成员q构造函数和析构函数构造函数和析构函数q封装封装-属性属性q继承继承q多态多态面向对象的优点和特征q面向对象编程的优点面向对象编程的优点:q可维护性高q可复用好q可扩展好q灵活性高q面向对象的特点:面向对象的特点:q抽象q封装q继承q多态类的声明和实例化q类是对象的模板,使用对象前必须先创建类类是对

27、象的模板,使用对象前必须先创建类访问修饰符访问修饰符 class 类名类名:父类名父类名 字段;字段; /描述对象的状态描述对象的状态 属性;属性; /用于设置或获取类中相关的数据值用于设置或获取类中相关的数据值 方法;方法; /实现对象的行为实现对象的行为 构造函数;构造函数; /初始化对象初始化对象 private class People private string name; 类的声明和实例化q对象是类的实例,是具体的。要使用对象,必须对象是类的实例,是具体的。要使用对象,必须使用关键字使用关键字new 实例化类的一个对象实例化类的一个对象 = new People object1

28、= new People();类成员q成员变量成员变量q成员方法成员方法成员变量 常量常量:在类中声明的常量,代表与类相关:在类中声明的常量,代表与类相关的常数值。的常数值。 字段字段:在类中声明的变量,用于存储属性:在类中声明的变量,用于存储属性的值。的值。 类型类型:属于类的局部类型。:属于类的局部类型。 索引器索引器:又称下标指示器,通过索引器访:又称下标指示器,通过索引器访问类的多个实例。问类的多个实例。成员方法 方法方法:完成类中的各种操作,是封装在类内部:完成类中的各种操作,是封装在类内部的、用于执行一定操作的过程或函数。的、用于执行一定操作的过程或函数。 属性属性:用于设置或获取

29、类中相关的数据值,如:用于设置或获取类中相关的数据值,如定义字段的值并对它们进行读、写操作。定义字段的值并对它们进行读、写操作。 事件事件:由类产生的通知,用于说明发生了什么,:由类产生的通知,用于说明发生了什么,是一种触发机制,是类对外界的响应,使对象具是一种触发机制,是类对外界的响应,使对象具有与外界进行交互的能力。当某个事件发生时,有与外界进行交互的能力。当某个事件发生时,就调用了与该事件相关联的方法。就调用了与该事件相关联的方法。 构造函数构造函数:析构函数析构函数:构造函数和析构函数q构造函数构造函数构造函数特点:构造函数特点:(1 1)具有和类相同的名称)具有和类相同的名称(2 2

30、)没有返回值)没有返回值构造函数功能:构造函数功能:(1)(1)为对象分配内存空间为对象分配内存空间(2)(2)成员变量的初始化成员变量的初始化q析构函数析构函数q特点:与类名相同,前面多一个“”q功能:收回对象占用的内存空间构造函数封装-属性q属性体现了面向对象的封装性属性体现了面向对象的封装性q通过访问器(通过访问器(get/set)来操作类的数据内容)来操作类的数据内容q 通过通过get/set访问器对属性值进行读写主要有三种:访问器对属性值进行读写主要有三种:q只有只有set访问器,表名属性值只可设置(可写)访问器,表名属性值只可设置(可写)q只有只有get访问器,表名属性值只可读(可

31、读)访问器,表名属性值只可读(可读)q既有既有set又有又有get访问器,表名属性值既可读也可设置(可访问器,表名属性值既可读也可设置(可读可写)读可写)说明:说明:属性的属性的getget访问器通过访问器通过returnreturn来读取属性值,来读取属性值,setset访问器通过访问器通过vlauevlaue来设置属性值来设置属性值继承qC#C#支持类的单继承,子类可以继承支持类的单继承,子类可以继承已有的基类已有的基类的的特征和能力特征和能力,而且,而且可以可以加入加入新的特性或者是修改新的特性或者是修改已有的特性已有的特性。q 类继承的基本语法是:类继承的基本语法是: class 子类名称子类名称 : 父类名父类名 类的主体类的主体q说明说明:(1)(1)子类将从父类继承而来的成员变量和方法作为自己的子类将从父类继承而来的成员变量和方法作为自己的成员变量和方法;成员变量和方法;(2)(2)子类不能继承父类中用子类不能继承父类中用privateprivate 修饰的成员变量和方修饰的成员变量和方法。法。base关键字关键字 在类的继承中,如果在在类的继承中,如果在子类中定义了与父类同名子类中定义了与父类同名的成员变量的

温馨提示

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

评论

0/150

提交评论