第2章C#程序设计基础.ppt
《第2章C#程序设计基础.ppt》由会员分享,可在线阅读,更多相关《第2章C#程序设计基础.ppt(97页珍藏版)》请在三一文库上搜索。
1、,Web应用系统开发,覃焱,石家庄铁道大学经济管理学院商务信息系,第2章 C#程序设计基础,第1节 C#语言简介 一、C#的起源 :,C#继承了C的语法,稍有修改。 C#建立在C+的对象模型理论上,并加以改进。 C#采用了Java的很多思想、方法,比如通过中间语言来实现程序的可移植性等。,对比Java,1、Java语言的平台独立性: Java源代码编译成独立于平台的Java字节码。然后由Java虚拟机解释执行字节码。只需针对各种平台编写各种虚拟机,使字节码在各种平台上由各自的虚拟机解释执行,从而实现了平台独立性。 .NET原理类似,今后只需针对各种平台开发出各种CLR,就可以使MSIL语言代码
2、在各种平台上由各自的CLR执行,来实现平台独立性。,2、其它的类似之处: Java语言的定位是网络编程,取消了指针类型,C#的目标之一也是网络编程。 执行Java字节码时,Java虚拟机要对字节码进行安全检查;在运行时,Java字节码被严格限制在特定的内存区域内,任何对这个内存区域外的访问都是被禁止的。 C#具有类似的原理。,“如果你会C+,也会Java,那么你已经懂得了C#的90%。”,二、C#程序的简单构成介绍,C#程序是由类构成的,对于一个应用程序来说,必须有一个类中定义Main()方法。,(一)简单的控制台应用程序(Welcome.cs),using System; / C#大小写敏感
3、。语句结尾以“;”结束。 class Welcome static void Main() /C#调用Main( )作为程序的开始, Main的首字母必须大写。 Console.WriteLine(“Please enter your name:”); Console.ReadLine(); Console.WriteLine(“Welcome to you!”); ,1、名字空间,程序中往往会定义很多类,为了合理有效的把这些类组织起来,可以使用名字空间将这些类按一定的关系、层次组织起来。,using System表示导入名字空间System,如果没有该语句则程序必须为:,class Welc
4、ome static void Main() System .Console.WriteLine(“Please enter your name:”); System .Console.ReadLine(); System .Console.WriteLine(“Welcome to you!”); ,System是C#的一个最顶层的名字空间,Object是C#的最顶层基类,它位于System名字空间中。 C#中,所有类都默认是System.Object 派生的。所有的类都直接或间接地继承Object类(即System.Object),System,2、类和类方法,(1)类: 每个东西都必须属
5、于一个类。C#程序设计的主要任务就是定义类及类的方法。 class Welcome声明了一个类,类的名字叫做Welcome。这个程序所作的事情就是它完成的。,(2)类方法: 在 .NET 中,所有方法都必须是类或结构的成员。C#程序的执行总是从Main()方法开始的。一个程序中不允许出现两个或两个以上的Main()方法。C中Main()方法也必须被包含在一个类中。,static指明该方法是一个静态方法,表示该方法是一个类方法,而不是实例方法。 请大家思考回忆一下,类方法与实例方法在调用的时候有什么不同?,static,3、程序的入口,每个应用程序都有一个程序入口,程序的执行就从这里开始。在C#
6、中是用Main()方法做程序入口的。Main()方法必须是static方法。,4、程序的输入和输出:,程序的输入输出都是通过Console来完成的。Console是名字空间System中的一个类(表示控制台输入输出设备,一般指键盘和显示器。)。 Console类有两个最基本的static方法: ReadLine:接受输入设备输入 WriteLine:用于在输出设备上输出。 Console另两个方法是Read和Write,与ReadLine、WriteLine的不同在于:ReadLine和WriteLine执行时多加了一个回车键。,5、分部类型,(1)概念,用partial关键字把一个类的定义分
7、散在多个源文件中,每个源文件中包含一部分类的定义,在编译时,编译器会把每个分部合并为一个整体(分部类型的所有部分必须一起编译,使它们可在编译时被合并)。,举例:,Test1.cs文件: Public partial class Test1 /类Test1的方法DoWork1()被定义在Test1.cs文件中。 Public void DoWork1(); Test2.cs文件: Public partial class Test1 /类Test1的方法DoWork2()被定义在Test2.cs文件中。 Public void DoWork2(); ,注意:保证这些分散的定义处在相同的名字空间之
8、内。,(2)分部类的作用,设计大型项目时,可以将类的定义分散在多个文件中,便于多个开发人员并行开发。(有时,把一个较大的类分解为几个部分将使程序逻辑更清晰、简洁。) 对某些自动生成的代码文件开发人员没必要去改动,可以另外再新建一个程序源文件对类的功能进行完善。,(二)简单的窗口应用程序 (HelloWorldForm.cs),Form1.cs: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using Sy
9、stem.Text; using System.Windows.Forms; namespace WindowsApplication3 public partial class Form1 : Form public Form1() InitializeComponent(); private void button1_Click(object sender, EventArgs e) label1.Text = “你好,世界“; ,(三)C#程序的基本构成,一般的C#源程序文件由以下三部分组成:,1、using语句。表示引入其他类的库,using语句可有0到多句,它必须放在类型定义的前面。
10、 2、namespace。表示类所在的名字空间。Namespace后的花括号内,可以嵌套一些using语句、类型定义或namespace。每个文件都可以包含多个类型定义、多个名字空间。 3、类型定义。是C#源程序的主要部分。类型定义可以位于名字空间之内,也可以位于名字空间之外。,类型定义中最主要的是类的定义(还有结构的定义)。每个类的定义由类头定义和类体定义两部分:,(1) 类头定义:声明类名,说明类的继承性。 (2) 类体定义:定义类的成员,包括属性、域(包括变量、常量、对象数组等)、方法(方法体内不能再定义其它的方法)等成分。 类和方法中的所有语句用括起。除using和namespace语
11、句之外的其它的执行具体操作的语句,都只能存在于类的大括号之中。 C#语句由表达式、变量、常量和关键字等更小的语言单位构成。,一些基本的关系:,(1)程序包含多个.cs文件。 (2)每个.cs文件包含0至多个名字空间。 (3)每个名字空间包含多个类的定义。 (4)每个方法中含有局部变量定义及语句。 (5)语句是构成C#程序的基本单位之一。每条C#语句都由分号(;)结束。,三、C#程序的结构总结,C#程序可由一个或多个文件组成。每个文件可包含一个或多个名字空间。一个名字空间可包含其它名字空间和类、结构、接口、枚举、委派等类型。C#程序的主干如下:,Using System; /using语句 Na
12、mespace MyNamespace1 /名字空间 class MyClass1 /类定义 struct Mystruct /结构定义 interface ImyInterface /接口定义 delegate int MyDelegate(); /委派定义 enum MyEnum /枚举定义 namespace MyNamespace2 /内部名字空间 class MyClass2 /其它的类定义 public static void Main(string args) /类定义中的方法定义 ,四、C#的常见开发工具,(1).NET Framework SDK:该工具在Windows 20
13、03上已经预装了,之前的windows版本需要手动装。 (2)Visual Studio.NET,事实上Visual Studio .NET的核心就是SDK。,推荐使用Visual Studio .NET提供的集成开发环境来编辑C#程序。原因是: (1) Visual Studio .NET的 IDE支持首行缩进,而且 C#源程序的关键字等可以用不同的颜色直观地表示出来。 (2)Visual Studio能动态地查找、提示编辑过程中的错误。 (3)如果开发Windows界面应用程序,可像VB一样直接通过拖放控件来“绘制”Windows窗体。 (4)有丰富的帮助文档。,第2节 C#语法基础,一些
14、说明: 1、C#中可用三种注释方式: (1)/ 用于单行注释,注释从/开始,终止于行尾。 (2)/*/用于多行注释。注释从/*开始,到*/结束,这种注释不能互相嵌套。 (3)/ 是C#特有的文档注释。以/开始,直到行尾。,2、C#编码惯例(非强制的) (1)类名、属性名、方法名的首字母应大写,其中包含的所有单词都应紧靠在一起,且大写每个单词的首字母,例如:MyAClass,AuthorName。 (2)对于接口的名字,都在前面加上一个I,如:Icomparable。 (3)局部变量和参数变量的首字母一般小写。,一、C#中的数据类型 1、C#数据类型概述,(1)预定义类型:由语言本身定义 (2)
15、用户自定义类型:程序员在程序里根据自己的需求定义的。,无论是预定义类型或用户定义类型,按在内存中的存储方式可分为两大类:数值类型和引用类型。 (1)值类型:值类型变量的值直接存于变量中. (2)引用类型:引用类型的变量是指向实际数据的地址。 即引用类型的变量要占据一定的内存空间,它所引用的对象实体也要占据一定的空间。引用类型在使用前必须产生其实例。,C#的已定义的数据类型,转义符,转义符是一些有特殊含义、很难用一般方式表达的字符。用反斜线开头,后面跟着一个字符来表示某个特定的特殊字符。 如n表示换行,表示单引号字符。,例如:char c,m; c=r; /注意是引号; m=n; 这样,变量c和
16、m就分别存储了一个“回车”字符和一个“换行符”字符。,字符可以是字母表中的字符,也可以是转义符,还可以是要表示的字符所对应的Unicode码。当用Unicode码表示的方法是:用u后跟4位十六进制数,如u0041表示字母A。,类型转换,1)隐含转换(implicity): 数值范围较小的类型,被赋值给数值范围较大的类型(转换由编译器自动完成)。 例如: int a=123; long b=a;,2)显式转换(explicity) long a=123; int b=a; /错,int范围小于long,转换不会发生。 可显式进行: long a=123; int b=(int)a; 语法:(类型
17、)要转换的数据 显式转换中超出类型的数据内容都会在转换过程中被舍弃而遗失。,装箱和拆箱,1)装箱:将值类型的数据转换成引用类型(如Object)。过程是产生一个对象实例,并把值类型的数据复制到那个实例中。 例: int i=10; object obj=i;,装箱机制使得一个需要引用类型做参数的函数可以直接代入一个值类型的数据,从而较好地统一了值类型与引用类型的使用。 例如: void F(object obj) Console.WriteLine(obj.ToString(); 这时,可代入各种类型的参数,这些参数可以隐式地转换成Object对象。如: F(123);,2)拆箱:拆箱是将Ob
18、ject类型显式地转换为值类型。过程是先检查Object实例中被包装的数据,然后把数值从实例中复制出来。,例如: int i=123; object obj = i; /装箱 i =(int) obj; /拆箱,装箱和拆箱使我们能将任何类型的值都可以按对象处理。,using System;,class TestBoxing,public static void Main(),int i = 123;,object o = i;,i = 456;,Console.WriteLine(“The value-type value = 0“, i);,Console.WriteLine(“The ob
19、ject-type value = 0“, o);,输出 The value-type value = 456,The object-type value = 123,1、数组,数组是有序数据的集合,数组中每个元素有相同的数据类型,可用一个统一的数组名和下标来唯一地确定数组中的元素。,(1)数组的声明: 声明: 数据类型 数组对象名; 为数组对象分配内存空间: 数组对象名new 数据类型数组长度; 例如: int score; score=new int100;,或两个步骤合并: 数据类型 数组对象名new 数据类型名数组长度;,数组用new分配空间的同时,数组的每个元素都会自动赋一个默认值(
20、整数为0,实数为0.0,bool型为false,引用型为null)。,数组的初始化:即赋初值。,一维数组:int numbers=new int5 1,2,3,4,5; 或:int numbers=new int 1,2,3,4,5; string names=new string3“a”,”b”,”c”; 或:string names=new string“a”,”b”,”c”; 或在声明数组变量的同时初始化,可省略new: int numbers=1,2,3,4,5 string names= “a”,”b”,”c”;,多维数组: string, ss=“a”,”b”,“c”,”d”; (
21、多维数组是有多个下标的数组,数组的下标之间用逗号分开: 数据类型, 数组对象名; ),(2)数组元素的使用: 数组对象名下标,如int score=new int100;有100个元素,分别为: score0,score1, ,score99。,下标可为整型常数或表达式。下标从0开始到数组长度减1。,二、C#中的变量和常量 (一)变量声明和赋值,1、值类型变量的声明和赋值:(声明:数据类型 变量名) int n1; /声明变量 n1=20; /对变量进行相应的赋值初始化。 或:int n1=20; /在声明变量的同时赋值。,2、引用类型变量的声明和赋值: TheObject myobject;
22、 /为TheObject类创建一个引用类型的 变量,该变量还没指向任何事物。 myobject = new TheObject(); /将该引用类型的变量指向一个TheObject 对象,利 用new关键字创建一个新的TheObject对象。,3、变量的作用域问题: 例如,以下的块定义了一个叫Number的变量: int Number=1; 其中用大括号表示开始和结尾。变量Number作用域就局限于这个块内,如果在作用域外访问,就会发生编译错误。,(二)定义常量,与变量不同的是常量必须在声明时就赋值,并且其值不能被修改。 例: const int Number=1; 其中,const是声明常量
23、前必须加的关键字。,三、C#中的操作符与表达式,(一)赋值运算符:“= ”、“+= ”、“-=”、“*=”、“/=”、“%=”(取模)。 例:double number=2.56; x+=2; /结果等同于: x=x+2; x+=y; /结果等同于: x=x+y;,(二)算术运算符: (1) + 加; 减; * 乘; / 除; 取模。 注:整数进行算术运算结果也是整数,除法的余数被省去。例如10/3结果为3,余数1被省去。,(2)C#对加运算符进行了扩展,用它能进行字符串的连接,例如:”abc”+”de”,可得到字符串”abcde”。,(3)递增递减运算符(又叫“一元算术运算符”),+和 i+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 程序设计 基础
链接地址:https://www.31doc.com/p-3423401.html