第1章C#语言基础.ppt
《第1章C#语言基础.ppt》由会员分享,可在线阅读,更多相关《第1章C#语言基础.ppt(118页珍藏版)》请在三一文库上搜索。
1、C#应用程序设计教程 (WPF版),本课程的前序课程 1、计算机导论 2、C或C+课程 本课程讲述主要内容 1、WPF应用程序 2、Web服务和WCF基础 3、Windows Form编程,详细内容,第1章 C#语言基础 第2章 WPF编程基础 第3章 WPF文本编辑器 第4章 文件和流 第5章 WPF图形图像编程 第6章 多媒体 第7章 进程和多线程 第8章 Socket编程初步 第9章 数据库应用程序设计 第10章 可扩展标记语言 第11章 Web服务和WCF基础 第12章 Windows Form编程,C#及Visual Studio开发工具介绍,C# 2000年 C#诞生 2001年
2、C#被ECMA(欧洲计算机制造者协会)规定为高级语言开发标准(ECMA-334 ) 2003年 C#被ISO(国际标准化组织)规定为高级语言开发标准(ISO/IEC 23270 ) VS开发工具 2003年发布Visual Studio.NET 2003(VS.NET2003) 2005年11月发布Visual Studio 2005(VS2005)英文版 2006年1月发布VS2005 Professional简体中文版 2008年2月发布会上发布Visual Studio 2008,VS2008的各种版本(功能从最强到最弱) VS2008 Team 版本 用于大型团队开发 VS2008 P
3、rofessional版本 用于大中型软件公司 VS2008 Standard版本 用于小型软件公司 VS2008 Express版本 用于业余开发者(初学者) 本课的上机实验环境 (1)VS2008 Express版本 (2)Direct X SDK 9.0C 个人安装建议 (1)操作系统使用 WindowsXP SP2 (2)至少256MB内存,最好512MB,第一章 C#语言基础,1.1 C#语言特点 Microsoft.Net FrameWork是微软提出的新一代软件开发模型 C#语言是.Net FrameWork中新一代的开发工具 用C#语言编写的源程序,被C#语言编译器编译为公共中
4、间语言代码(CIL) ,由CLR中的既时编译器(JIT)将公共中间语言代码翻译为CPU可执行的机器码,由CPU执行。,C#语言的CLR和JAVA语言的虚拟机类似。这种执行方法使运行速度变慢,但带来其他一些好处,主要有: 通用语言规范(CLS) 自动内存管理 交叉语言处理 更加安全 版本支持 完全面向对象,1.2 编写控制台应用程序,例1.1 程序首先让用户通过键盘输入自己的名字,然后程序在屏幕上输出一条欢迎信息。 using System; /导入命名空间 class Welcome /声明了一个类 static void Main( ) /主程序,在类中定义,静态的 Console.Writ
5、eLine(“请键入你的姓名:“); Console.ReadLine( ); /从键盘读入数据,输入回车结束 Console.WriteLine(“欢迎!“); ,(1)运行VS2008程序,单击菜单“文件(F)|新建项目(P)“菜单项,打开“新建项目“对话框。在“模板(T) “列表框中选择“控制台应用程序“,在“名称(N) “编辑框中键入e1_1,单击“确定“按钮,创建项目。,出现如图界面,按图中那样修改Program.cs文件。,(2)按CTRL+F5键,运行程序,运行结果如图。,1.3 类的基本概念,C#语言是一种现代的、面向对象的语言。该方法提出了一个全新的概念: 类,它的主要思想是
6、将数据(数据成员)及处理这些数据的相应方法(函数成员)封装到类中,类的实例则称为对象。这就是我们常说的封装性。,1.3.1 类的基本概念,定义一个描述个人情况的类Person如下: using System; class Person private string name=“张三“; private int age=12; public void Display( ) Console.WriteLine(“姓名:0,年龄:1“,name,age); public void SetName(string PersonName) name=PersonName; public void SetA
7、ge(int PersonAge) age=PersonAge; ,类的声明格式如下: 附加声明 类修饰符 class 类名类体 其中,关键字class、类名和类体是必须的,其他项是可选项。 类修饰符包括new、public、protected、internal、private、abstract和sealed,1.3.2 类成员的存取控制,希望类中隐蔽一些数据。一些函数不被其他类的程序调用,只能在类内部使用。解决这个问题的方法是使用访问权限控制字,常用的访问权限控制字如下: private(私有) public(公有) 封装有两个意义: 1、把数据和处理数据的方法同时定义在类中; 2、用访问权
8、限控制字使数据隐蔽。,1.3.3 类的对象,Person类仅是一个自定义的新数据类型,由它可生成Person类的实例,C#语言叫对象。 Person OnePerson=new Person( ); /建立Person类对象,变量OnePerson是对Person类对象的引用。 也可以分两步创建Person类的对象: Person OnePerson; OnePerson=new Person( ); OnePerson虽然用地址引用Person类对象,但不是C中的指针,不能象指针那样进行加减运算,也不能转换为其他类型地址,它是引用型变量,只能引用(代表)Person对象。,1.3.4 类的构
9、造函数、构造函数重载和析构函数,构造函数:在建立类的对象时,需做一些初始化工作。每当生成类的对象时,自动调用类的构造函数。因此可把初始化工作放到构造函数中完成。构造函数和类名相同,没有返回值。 例如可定义Person类的构造函数如下: public Person(string Name,int Age) name=Name; age=Age; 当用Person OnePerson=new Person(“张五“,20)语句生成Person类对象时,将自动调用构造函数。,构造函数重载:在C#语言中,同一个类中的函数,如果函数名相同,而参数的类型或个数不同,认为是不同的函数,这叫函数重载。仅返回值
10、不同,不能看作不同的函数。 例如可以定义Person类没有参数的构造函数如下: public Person() name=“张三“; age=12; 用语句Person OnePerson=new Person(“李四“,30)生成对象时,将调用有参数的构造函数,而用语句Person OnePerson=new Person()生成对象时,调用无参数的构造函数,析构函数:变量和类的对象都有生命周期,生命周期结束,这些变量和对象就要被撤销。类的对象被撤销时,将自动调用析构函数。一些善后工作可放在析构函数中完成。析构函数的名字为类名,无返回类型,也无参数。 Person类的析构函数为 Person
11、()。 C#中类的析构函数不能被自己编写的代码调用,当垃圾收集器撤销不被使用的对象时,自动调用不被使用对象的析构函数。由于析构函数无参数,因此,析构函数不能重载。,1.3.5 使用Person类的完整的例子,using System; namespace e1_2 class Person private String name=“张三“; private int age=12; public void Display() Console.WriteLine(“姓名:0,年龄:1“,name,age); public void SetName(string PersonName) name=P
12、ersonName; public void SetAge(int PersonAge) age=PersonAge; ,public Person(string Name,int Age) name=Name; age=Age; public Person() name=“田七“; age=12; class Program static void Main(string args) Person OnePerson=new Person(“李四“,30); OnePerson.Display(); OnePerson.SetName(“王五“); OnePerson.SetAge(40);
13、 OnePerson.Display(); OnePerson=new Person(); OnePerson.Display(); ,键入CTRL+F5运行后,显示的效果是: 姓名: 李四,年龄:30 姓名: 王五,年龄:40 姓名: 田七,年龄:12,1.3.6 程序调试与异常处理,程序错误主要分为3类,包括语法错误、逻辑错误和异常。 语法错误:主要是指由于在代码中使用不正确的语法造成的错误,比如表达式书写有误、调用了未定义的方法等,VS2008编辑器会在书写代码时使用红色波浪线或蓝色的波浪线标识出来。 逻辑错误:例如运算符使用不正确、语句次序不对、循环语句的结束条件不正确等,也可能是算法
14、有问题。一般情况下,首先要分析某一逻辑错误发生的大概位置,设置断点,运行程序后,采用逐语句执行方法,直到找到逻辑错误的原因。,可以使用VS2008中的工具条中的调试按钮来完成调试工作,其中第一个按钮启动调试,第三个按钮结束调试,倒数第二个按钮是单步执行代码,一次执行一行。当遇到函数调用时,不会进入到函数内部,直接执行调用函数,然后在函数调用的下一条语句停止执行。倒数第三个按钮也是单步执行代码,一次执行一行,当遇到函数调用时,会跟踪到函数内部。倒数第一个按钮是从函数内部跳出。,1.4 C#的数据类型,C#语言的数据类型可以分为三种类型: 值类型 引用类型 指针类型 指针类型仅用于非安全代码中。,
15、1.4.1 值类型和引用类型区别,见下例: using System; class MyClass public int a=0; class Test static void Main() f1(); static public void f1() int v1=1; int v2=v1; v2=2; MyClass r1=new MyClass(); MyClass r2=r1; r2.a=2; ,1.4.2 值类型变量分类,C#语言值类型可以分为以下几种: 简单类型(Simple types) 数值类型 整数类型 字符类型(char) 浮点数类型 十进制类型(decimal) 布尔类型(
16、bool), 结构类型(Struct types) 枚举类型(Enumeration types)。 C#语言值类型变量无论如何定义,总是值类型变量,不会变为引用类型变量。,1.4.3 结构类型,结构类型和类一样,可以声明构造函数、数据成员、方法、属性等。结构和类的最根本的区别是结构是值类型,类是引用类型。和类不同,结构不能从另外一个结构或者类派生,本身也不能被继承。 struct point public int x,y; class Test static void Main() point P1; P1.x=166; P1.y=111; point P2; P2=P1; point P3
17、=new point(); ,1.4.4 简单类型,简单类型也是结构类型,因此有构造函数、数据成员、方法、属性等,即使一个常量,C#也会生成结构类型的实例,因此也可以使用结构类型的方法。 需要注意的是: 和C语言不同,无论在何种系统中,C#每种数据类型所占字节数是一定的。 字符类型采用Unicode字符集,一个Unicode标准字符长度为16位。 整数类型不能隐式被转换为字符类型(char) 。 布尔类型有两个值:false,true。 十进制类型(decimal)也是浮点数类型,只是精度比较高,一般用于财政金融计算。,1.4.5 枚举类型,C#枚举类型和C、C+中的枚举类型使用方法基本一致。
18、见下例: using System; class Class1 enum Days Sat, Sun, Mon, Tue, Wed, Thu, Fri; static void Main(string args) Days day=Days.Tue; int x=(int)Days.Tue; Console.WriteLine(“day=0,x=1“,day,x); ,1.4.6 值类型的初值和默认构造函数,C#语言要求所有变量都必须有初值,如没有赋值,采用默认值。对于简单类型,sbyte、byte、short、ushort、int、uint、long和ulong默认值为0,char类型默认值
19、是(char)0,float为0.0f,double为0.0d,decimal为0.0m,bool为false,枚举类型为0,在结构类型和类中,数据成员的数值类型变量设置为默认值,引用类型变量设置为null。 可以显示的赋值,例如int i=0。而对于复杂结构类型,每个数据成员都按此种方法赋值,显得过于麻烦。由于数值类型都是结构类型,可用new语句调用其构造函数初始化数值类型变量,例如:int j=new int()。,1.4.7 可空类型,C#2.0增加了可空类型,它是System.Nullable结构的实例,取值范围为基础值类型正常范围内的值,再加上一个null值。 例如定义一个可空的in
20、t类型变量:int? num = null,取值范围包括全体int的值,再加上null。可空类型的每个实例都具有两个公共的只读属性:HasValue和Value,HasValue表示变量是否有值,如为false表示变量为null;属性Value为变量的值。,1.4.8 引用类型分类,C#语言中引用类型包括:类、接口和委托。 C#语言中预定义了一些类如object类、数组类、字符串类等,程序员也可定义自己的类。C#语言引用类型变量无论如何定义,总是引用类型变量,不会变为值类型变量。 C#语言引用类型对象一般用运算符new建立,用引用类型变量引用该对象。,1.4.9 object类,C#中的所有类
21、型(包括数值类型)都直接或间接地以object类为基类。object类是所有其他类的基类。任何一个类定义,如果不指定基类,默认object为基类。,1.4.10 数组类,在进行批量处理数据的时候,要用到数组。数组是一组类型相同的有序数据。数组按照数组名、数据元素的类型和维数来进行描述。 1、数组的概念和定义 C#语言中数组是类System.Array对象,使用数组首先要定义一个数组类变量,例如定义一个int类型数组变量:int a,其中a是数组名称,用来引用数组类对象,数组元素是int类型,只能通过a索引方法使用数组元素。,2、建立数组对象及数组初始化 定义一个数组类变量后,必须建立数组对象,
22、例如声明一个整型数组:int a=new int5,实际上生成了一个System.Array类对象,其元素是a0、a1、a2、a3、a4。 可以用循环语句为每个元素赋值,下边是初始化一维数组的例子: class Test static void Main() int arr=new int3; for(int i=0;iarr.Length;i+) arri=i*i; for (int i=0;iarr.Length;i+) Console.WriteLine(“arr0=1“,i,arri); ,程序的输出为: arr0 = 0 arr1 = 1 arr2 = 4,初始化的另一个方法是直接列
23、出初始值,例子如下: int a1; a1 = new int1,2,3; int a2=new int31,2,3; int a3=1,2,3; int1,2,3; int, a4=new int,1,2,3,4,5,6; int, a5=1,2,3,4,5,6; 3、交错数组 所谓交错数组,即数组的元素还是数组,例如: int j2=new int2; j20=new int1,2,3; j21=new int1,2,3,4,5,6;,4、复制数组 数组是引用类型,因此下边语句将使两个数组类变量引用同一个数组类对象: int arr=10,20,30,40; int arr2=ar; 如果
24、希望创建一个新数组,其元素和另一个元素相同,可以使用如下方法: class Test public static void Main() int arr=10,20,30,40; int arr1=new intarr.Length; for(int i=0;iarr.Length;i+) arr1i=arri; ,由于数组是类System.Array对象,该类提供了两个方法可完成数组的复制,如下: int arr=10,20,30,40; int arr1=new intarr.Length; arr.CopyTo(arr1,0); /方法1 int arr2=(int)arr.Clone(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 语言 基础
链接地址:https://www.31doc.com/p-2251458.html