1、第一页,共五十四页。1.1 1.1 简单的简单的C#C#程序程序(chngx)(chngx)及其构成及其构成1.1.1 1.1.1 第一个第一个C#C#程序程序例1、using system;class HelloWorld public static void Main()Console.WriteLine(“Hello World!”);程序作用:输出一行(yxng)信息“Hello World!”。表示表示(biosh)导入名字导入名字空间,相当于空间,相当于C中的中的#include用用class来声明一个新来声明一个新的类,类的名字为的类,类的名字为Hello World定义一个定义
2、一个Main方法,方法,public表示访问权表示访问权限,限,static指明这是一个静态方法。该方指明这是一个静态方法。该方法作为整个程序的入口,首字母要大写。法作为整个程序的入口,首字母要大写。实现字符串的输出。实现字符串的输出。Console是在名字空间是在名字空间System中定义的类,表示控制台输入输出设备,中定义的类,表示控制台输入输出设备,即键盘和显示器。类中有两个基本的方法即键盘和显示器。类中有两个基本的方法Readline和和 Writeline,还有,还有Read和和Write方法。方法。第二页,共五十四页。例2、简单(jindn)窗口程序using System;usi
3、ng System.Drawing;using System.Windows.Formspublic class HelloWorldForm:System.Windows.Forms.Form public HelloWorldForm()this.ClientSize=new System.Drawing.Size(200,180);this.Name=“HelloWorldForm”;this.Text=“HelloWorldForm”;this.Paint+=new System.Windows.Forms.PaintEventHandler(this.HelloWorldForm_P
4、aint);声明声明(shngmng)一个公共类,并用一个公共类,并用“:”指明它是指明它是Form(窗体)的子(窗体)的子类。类。设定了窗体的大小、名设定了窗体的大小、名字和标题文字字和标题文字(wnz),并对绘制事件(并对绘制事件(Paint)进行了处理。进行了处理。第三页,共五十四页。static void Main()Application.Run(new HelloWorldForm();private void HelloWorleForm_Paint(object sender,System.Windows.Form.PaintEventArgs e)e.Graphics.Dra
5、wString(“Hello,world”,new Font(“Curior New”,12f),new SolidBrush(Color.Blue),50f,100f,null);用用Graphics的方法的方法(fngf)DrawString()()在坐标(在坐标(50f,100f)处处输出字符串。输出字符串。用用Application.Run方法调用方法调用(dioyng)一个新建的窗体。一个新建的窗体。第四页,共五十四页。using System;例3、另一个简单(jindn)的窗口程序using System.Drawing;using System.Windows.Forms;na
6、mespace ch01 public class HelloWorldWin:System.Windows.Forms.Form public HelloWorldWin()InitializeComponent();private void InitializeComponent()this.Clinetsize=new System.Drawing.Size(200,180);this.Name=“HelloWorldWin”;this.Text=“HelloWorldWin”;this.Paint+=new System.Windows.Forms.PaintEventHandler(
7、this.HelloWorldWin_Paint);表示类所在的名字空间,在表示类所在的名字空间,在namespace 的花括号内,可以的花括号内,可以嵌套一些嵌套一些using 语句、类型定义语句、类型定义或者或者(huzh)其他的其他的namespace。第五页,共五十四页。static void Main()Application.Run(new HelloWorldWin();private void HelloWorldWin_Paint(object sender,System.Windows.Form.PaintEventArgs e)e.Graphics.DrawString(
8、“Hello,world”,new Font(“Curior New”,12f),new SolidBrush(Color.Blue),50f,100f,null);第六页,共五十四页。1.1.2 C#1.1.2 C#程序结构概括程序结构概括(giku)(giku)语句是C#程序的基本单位之一,每一条语句都由分号“;”结束(jish)。类和方法中的所有语句用一对大括号括起,除了using 及namespace语句之外的其他的执行具体操作的语句,都只能存在于类的大括号之中。大小写严格区分。一个程序只有一个程序入口,即一个Main()方法。1.程序包含多个.cs文件;2.每个.cs文件包含0个或多
9、个名字空间;3.每个名字空间包含多个类及接口的定义;4.每个类中含有多个变量(binling)及方法;5.每个方法中含有局部变量定义及语句。第七页,共五十四页。1.1.3 1.1.3 名称空间名称空间(kngjin)(kngjin)(名字空间名字空间(kngjin)(kngjin))名称空间用于在C#程序中定义作用域,通过声明名称空间,开发人员就可以为C#应用程序提供一个层次结构(jigu)。一个C#源程序可以由多个源代码文件所组成,每个源代码文件又可以包含多个名称空间,一个名称空间中又可以包含其他名称空间,这种多层次的结构(jigu)构成一个C#程序。名称空间的声明(shngmng)形式 n
10、amespace 标示符比如:namespace Mycompany public class Myclass public static void Dosomething()第八页,共五十四页。1.1.4 using1.1.4 using语句语句(yj)(yj)的使用的使用1、使用using语句可以访问一个名称空间(kngjin)中所有的类。用using语句指定名称空间(kngjin)以后,就可以直接使用这个名称空间(kngjin)内的类型和方法,而不需要指出类型和方法所在的名称空间(kngjin)。比如:System.Console.WriteLine(“Hello”);如果使用了usin
11、g语句:using System;就可以写成 Console.WriteLine(“Hello”);2、using语句也可以用来创建(chungjin)别名using Abc=System.Console;则System.Console.WriteLine(“hello”);可以写成Abc.WriteLine(“hello”);第九页,共五十四页。嵌套的名称(mngchng)空间namespace Mycompany public class MyClass .namespace Nested public class NestedClass public static void SayHel
12、lo()System.Console.WriteLine(“Hello”);using Myspace=Mycompany.Nested;public class UnNestedClass public static void Main()Myspace.NestedClass.SayHello();第十页,共五十四页。1.1.5 Main1.1.5 Main方法方法(fngf)(fngf)Main方法是程序的入口点,程序控制在该方法中开始(kish)和结束。每个C#程序都必须在它的某个类中定义一个Main方法,而且这个方法还必须定义为static和public无论在哪个类中定义这个方法,C
13、#编译器都可以直接定位到这个方法作为程序执行的入口。Main方法可以(ky)使用命令行参数,声名时可以(ky)有以下两种形式:public static int Main(string args)public static void Main(string args)命令行参数实际是一个string数组,元素有args0,args1等。第十一页,共五十四页。1.2 C#程序(chngx)中的基本输入输出输入输出字符界面的输入输出要用到System.Console来表示(biosh),System.Console的Read()方法可以输入一个字符,ReadLine()方法可以输入一行字符串,Wr
14、ite()方法可以输出一个数据或一个字符串(字符串之间或字符串与其他变量之间可以用加号+表示连接),WriteLine()方法可以输出一个字符串并换行。第十二页,共五十四页。using System;public class CharInandOut public static void Main(string args)char c=;System.Console.Write(“Please input a char:”);c=(char)System.Console.Read();Console.WriteLine(“you have entered:”+c);例例1.单个字符单个字符(z
15、 f)的输入输的输入输出出第十三页,共五十四页。using System;public class LineInandOut public static void Main(string args)string s=“;Console.Write(“please input a line:”);s=Console.ReadLine();Console.WriteLine(“you have entered:”+s);例例2.整行字符的输入输出整行字符的输入输出第十四页,共五十四页。例例3.数字的输入数字的输入(shr)输出输出(将输入将输入(shr)的字符串转成数的字符串转成数字如整数字如整数
16、int或实数或实数double)。using System;public class NumInandOut public static void Main(string args)string s=“;int n=0;double d=0;Console.WriteLine(“please input an int:”);s=Console.ReadLine();n=Int32.Parse(s);s=Console.ReadLine();d=Double.Parse(s);Console.WriteLine(“you have entered:”+n+”and”+d);Int32.Prase
17、()方法方法(fngf),将字符串,将字符串转成整数。转成整数。Double.Parse()方法方法(fngf),将,将字符串转成实数。字符串转成实数。第十五页,共五十四页。(1)如果有多项信息,信息之间可以用加号“+”连接起来,以表示形成(xngchng)一个字符串,例如:Console.WriteLine(“you have entered:”+n+”and”+d);(2)如果在字符串中有变量,还可以在字符串中用0、1、2等分别表示各个变量。例如:Console.WritrLine(“you have entered:0 and 1”,n,d);注意注意(zh y):第十六页,共五十四页。
18、图形界面最基本的输入输出是使用文本框对象(TextBox)获取用户输入的数据,使用标签对象(Label)或文本框对象输出数据,使用命令按纽(Button)来执行命令。图形界面的程序(chngx)最好借助于IDE集成开发工具来实现。2.2.2 图形界面的输入(shr)和输出第十七页,共五十四页。using System;using System.Windows.Forms;using System.Drawing;public class WinInOut:Form TextBox txt=new TextBox();Button btn=new Button();Label lbl=new L
19、abel();public void init()this.Controls.Add(txt);this.Controls.Add(btn);this.Controls.Add(lbl);txt.Dock=System .例例1-7 图形界面输入输出。图形界面输入输出。第十八页,共五十四页。2.3 C#程序(chngx)中的数据类型数据类型值类型(lixng)引用(ynyng)类型简单类型枚举类型结构类型类class接口类型interface指代类型delegate数组类型整型、字符型实型、十进制型布尔型直接包含数据存储对于对象的引用第十九页,共五十四页。2.3.1 简单(jindn)类型1、
20、整数类型 C#中有九种整数类型:短字节型sbyte、字节型byte、短整型short、无符号短整型ushort、整型int、无符号整型uint、长整型 long、无符号长整型ulong、字符型char(采用unicode编码)。2、实数类型 单精度实数float和双精度实数double,分别占用4字节和8字节。3、十进制类型 十进制类型decimal,为高精度128位数据类型(即16字节),可以表示(biosh)2829位有效数字。第二十页,共五十四页。4、布尔类型 用来表示逻辑数据(shj)的类型,取值只有“真”true和“假”false两个。5、字符串类型 string是引用类型的一种,表
21、示一连串的字符,书写时用一对双引号来表示,如“hello!”。6、对象类型 object是一切对象类型的父类型,是引用类型的一种,其他类型都从对象类型派生而来。第二十一页,共五十四页。2.3.2 标识符与关键字 标识符即变量方法等的名字,C#中的标识符以字母或下划线开头,包含字母、数字和下划线。可以以作为前缀(qinzhu),但是并不是标识符的一部分,只是为了让一些关键字也可以成为用户使用的标识符,如 class。C#是大小写敏感的语言,C#中的关键字都是由小写字母组成的。第二十二页,共五十四页。2.3.3 字面(zmin)常量1、布尔常量:true,false。2、整型常量:十进制为100,
22、-39;十六进制用0 x开头如0 x1a;长整型在数字后加上l,无符号常量则在数字后面加上u。注意:没有八进制常量。3、实数常量及十进制常量:可以使用普通小数方式也可以使用指数方式(1.23E2),单精度(jn d)后面加f或F,双精度(jn d)后面加 d或D。十进制常量后面加M或m。小数后面如果没有加符号,则会被自动认为是双精度常量。4、字符常量:用单引号表示如A,还可以用u后面跟十六进制数如u0041表示字母A。还有转义字符,与C语言类似。第二十三页,共五十四页。5、字符串常量:用双引号括起,中间可以包含转义字符,双引号必须在同一行上。的特殊用法:用来取消转义。必须放在引号的前面(qin
23、 mian)并且要直接相邻。如 “serversharefile.txt”“serversharefile.txt”如果在字符串中有一个双引号,则要用两个双引号表示如“say“hello”to me”可以表示成“say“hello”to me”。第二十四页,共五十四页。C#中的每个整型类型都对应于中的每个整型类型都对应于.NET类库中定义的一个类库中定义的一个(y)结构。结构。例如:例如:int System.Int32(struct)注意取值范围。注意取值范围。第二十五页,共五十四页。第二十六页,共五十四页。注意注意(zh y)后缀后缀第二十七页,共五十四页。int i=1;if(i)在在b
24、ool类型和其他类型之类型和其他类型之间不存在任何间不存在任何(rnh)对应关系。对应关系。第二十八页,共五十四页。数组数组是同一数据类型的一组值 数组属于引用(ynyng)类型,因此存储在堆内存中 数组元素初始化或给数组元素赋值都可以在声明数组时或在程序的后面阶段中进行 语法:数据类型 数组名称;int arrayHere;第二十九页,共五十四页。数组 学生分数(fnsh)的整数数组职员(zhyun)姓名的字符串数组室温(sh wn)的浮点数组数组位置第三十页,共五十四页。数组 static void Main(string args)int count;Console.WriteLine(
25、请输入您要登记的学生人数);count=int.Parse(Console.ReadLine();/声明一个存放姓名的字符串数组,其长度等于提供的学生人数 string names=new stringcount;/用一个 for 循环来接受(jishu)姓名 for(int i=0;icount;i+)Console.WriteLine(“请输入学生 0 的姓名,i+1);namesi=Console.ReadLine();Console.WriteLine(已登记的学生如下:);/用 foreach 循环显示姓名 foreach(string disp in names)Console.W
26、riteLine(0,disp);数组声明(shngmng)初始化数组元素(yun s)的循环显示输出的循环第三十一页,共五十四页。一维数组 声明(shngmng)并初始化int array1=new int5 1,3,5,7,9;string weekDays=new string Sun,Mon,Tue,Wed,Thu,Fri,Sat;int array2=1,3,5,7,9;string weekDays2=Sun,Mon,Tue,Wed,Thu,Fri,Sat;声明一个数组变量但不将其初始化int array3;array3=new int 1,3,5,7,9;/OK/array3=1
27、,3,5,7,9;/Error第三十二页,共五十四页。从System.Array类派生而来。常用(chn yn)属性和方法:Length属性、GetLength方法Rank属性GetValue方法、索引函数第三十三页,共五十四页。注意:注意:1、声明、声明(shngmng)的方法的方法 2、数组的长度、数组的长度第三十四页,共五十四页。第三十五页,共五十四页。第三十六页,共五十四页。第三十七页,共五十四页。第三十八页,共五十四页。第三十九页,共五十四页。装箱和拆箱装箱装箱从任何值类型到从任何值类型到System.Object类型的转换;类型的转换;从某个值类型到它所实现的接口类型的转换。从某个
28、值类型到它所实现的接口类型的转换。拆箱拆箱与装箱正好相反与装箱正好相反 int x=2;object o=x;int y=(int)o;第四十页,共五十四页。static void Main(string args)/存放字母的个数 int countLetters=0;/存放数字(shz)的个数int countDigits=0;/存放标点符号的个数int countPunctuations=0;/用户提供的输入 string input;Console.WriteLine(请输入一个字符串);input=Console.ReadLine();/声明 foreach 循环以遍历输入的字符串中
29、的每个字符。foreach(char chr in input)/检查字母if(char.IsLetter(chr)countLetters+;/检查数字if(char.IsDigit(chr)countDigits+;/检查标点符号if(char.IsPunctuation(chr)countPunctuations+;Console.WriteLine(“字母的个数为:0,countLetters);Console.WriteLine(“数字的个数为:0,countDigits);Console.WriteLine(“标点符号的个数为:0,countPunctuations);为所有(su
30、yu)计数器设置初始值接受输入对输入的每一个字符都进行循环使用了所有输入的字符之后,循环自动终止第四十一页,共五十四页。如何比较两个如何比较两个(lin)对象的对象的类型?类型?第四十二页,共五十四页。第四十三页,共五十四页。属性用于表示(biosh)对象的状态。C#中的属性成员称为“域”,而“属性”则是“属性化的方法”的专用名词。在定义属性时,用set及get来表示。public int size get return size;set size=value;而在使用时,可以简单地直接使用。int a=foo.size;foo.size=100;第四十四页,共五十四页。对象索引(suyn)就
31、是属性数组,利用下标来取得对象的属性数据。同样用get和set来表达,但与属性不同的是,索引没有名字,在定义时直接用this表示,在使用时,用“下标”来表示。(Indexer)第四十五页,共五十四页。指代(又叫代理或委派)是用来指代函数的,可以理解(lji)为一种类型安全的、面向对象的函数指针。C#直接使用delegate和event关键字来解决事件问题。(Delegate及Event)第四十六页,共五十四页。第四十七页,共五十四页。第四十八页,共五十四页。2.3.4 变量(binling)变量(binling)是内存中的一个存储空间,必须先声明再使用。例子(l zi):声明变量并赋值。usi
32、ng system;public class Assign public static void Main()bool b=true;int x=3;Console.WriteLine(“b=“+b);Console.WriteLine(“x=“+x);第四十九页,共五十四页。派生类的访问限制级别不能低于基类的反问派生类的访问限制级别不能低于基类的反问(fnwn)限制级别;限制级别;对方法参数类型的访问限制级别不能高于对方法的访问限制级别。对方法参数类型的访问限制级别不能高于对方法的访问限制级别。internal class Apublic class B:Aclass Contact pri
33、vate class Address public string m_city;protected void SendMail(Address addr)第五十页,共五十四页。静态静态(jngti)成员中不能成员中不能调用非静态成员调用非静态成员第五十一页,共五十四页。第五十二页,共五十四页。第五十三页,共五十四页。内容(nirng)总结C#程序基础.。设定了窗体的大小、名字和标题文字,并对绘制事件(Paint)进行了处理。语句是C#程序的基本单位之一,每一条(y tio)语句都由分号“。十进制类型decimal,为高精度128位数据类型(即16字节),可以表示2829位有效数字。如果在字符串中有一个双引号,则要用两个双引号表示。Console.WriteLine(请输入您要登记的学生人数)。3、指代及事件(Delegate及Event)第五十四页,共五十四页。