《2022年C#语言初级入门 .pdf》由会员分享,可在线阅读,更多相关《2022年C#语言初级入门 .pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C#读作“C sharp”,它是 Microsoft 开发的一种新语言,结合了 C/C+的强大功能和Visual Basic 的易用性。从最初的语言规范即可看出,C#无论在语法、丰富的 Web 开发支持还是自动化的内存管理上都和Java 非常相似。因此,如果你曾经用过C+或者 Java,再来学习C#应该是相当轻松的。最简单的C#程序首先我们来看标准的Hello World 程序。用文本编辑器创建一个新文件HelloWorld.cs,把下面的代码放入这个文件:/第一个 c#程序class HelloWorld static void Main()System.Console.WriteLine(
2、Hello World!);现在,在DOS 命令窗口进入保存HelloWorld.cs 的目录,然后执行:csc HelloWorld.cs 该命令编译源代码并生成HelloWorld.exe 文件。运行这个执行文件就可以看到:Hello World!下面我们来分析一下这个例子。第一行代码是一行注释,由“/”开始。和C/C+以及Java 一样,“/”告诉编译器忽略该行直至结尾为止的内容。C#中的另外一种注释方法是块注释。块注释由“/*”开始,到“*/”结束。程序中第二个重要的地方是第四行Main()方法的声明(static void Mian())。每一个C#程序都包含一个Main 方法,它是
3、程序执行的起点和终点。另外还请注意,HelloWorld 类的Main()方法定义成了静态(static)方法。程序的Main方法永远不会是全局的,这意味着Main 方法必须包含在类里面,如本例中Main()是在类 HelloWorld 里面(Main 方法也可以包含到结构里面,但一般它总是在类里面)。程 序 中 最 后 一 个 关 键 的 地 方 是 向 控 制 台 输 出 文 本 的 代 码,即“System.Console.WriteLine(Hello World!);”。WriteLine 是一个方法,定义于Console 类。WriteLine()把文本输出到标准输出设备并换行。C
4、onsole 类包含在System 名称空间(类的集合)里面。如果你想避免用“System.Console”的方式来指出Console 类的全称,可以在文件的开头加上“using System;”这行代码,以后就可以直接写出“Console.WriteLine(Hello World!);”。名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 6 页 -下面这个例子示范如何创建和使用用户定义的类以及如何创建动态链接库。利用文本编辑器创建两个文件。第一个是Apple.cs,内容如下:public class Apple private string variety=;public Ap
5、ple(string appleV ariety)this.variety=appleV ariety;public void outputV ariety()System.Console.WriteLine(variety);第二个文件是Example2.cs,内容如下:class Example2 static void Main()Apple mac=new Apple(Macintosh);Apple gra=new Apple(Granny Smith);Apple cor=new Apple(Cortland);mac.outputVariety();gra.outputVarie
6、ty();cor.outputVariety();首先,我们定义了一个新的用户定义类,名字为Apple。虽然Apple 类并不一定要放到独立的文件中,但把每个类都放到自己独立的文件中是一个好的面向对象编程习惯,有助于简化组织和管理。我们为Apple 类的声明加上了public 修饰符(public class Apple),这样其他类就可以创建Apple 类的实例。下一行代码定义了实例变量variety。使用了修饰符private 之后,只有在Apple 类的内部才可以直接访问variety 变量。这是一种常见的面向对象编程习惯,称为封装。封装之后,对象的工作细节对于对象的用户来说就隐藏不可见
7、了。你现在正使用的键盘就是封装在现实世界中一个很好的例子。我们并不完全了解键击如何发送到控制器(我们之中的大多名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 6 页 -数都不知道),但只要理解它的接口如何运作就可以了。例如我们知道,打开文本编辑器,按下键盘上的“&”键,“&”字符就会出现在屏幕上。如果每一个人都必须了解键盘的工作细节而不是只要了解它的接口,我们之中不会有很多人使用它。接下来的三行代码是:public Apple(string appleV ariety)this.variety=variety;这三行代码定义了Apple 类的构造函数。类的构造函数类似一个描述如何
8、创建类实例的蓝图。我们能够很容易地将构造函数和类里面的其他方法区分开来,因为构造函数总是和类具有相同的名字。在本例中,类 Apple 的构造函数有一个字符串参数,这个参数值随后被保存到实例变量variety。Apple 类的最后一个方法是outputVariety()。这个方法为访问实例变量提供了接口,所以称为存取方法(Accessor Method)。下面我们来看Example2 类。这个例子与前文例子的区别在于要创建并使用用户定义类Apple 的实例。我们用new 操作符创建了三个Apple 类的实例。创建类的实例时,我们无需显式地调用类的构造函数,new 操作符将自动为我们调用类的构造函
9、数。创建了三个 Apple 类的对象之后,我们依次调用这三个对象的outputVariety 方法,由 outputVariety 方法输出这三个对象里variety 的值。下面我们来编译和运行这个例子。首先我们要把Apple 类编译成动态链接库,命令如下:csc/target:library Apple.cs/target:library 表示不要创建执行文件,而是创建一个.dll 文件(即动态链接库)。所以,上面的命令将生成一个Apple.dll 文件。接下来我们编译Example2.cs,编译命令如下所示:csc/reference:Apple.dll Example2.cs 名师资料总
10、结-精品资料欢迎下载-名师精心整理-第 3 页,共 6 页 -现在我们得到了执行文件Example2.exe。执行这个文件可以在控制台上看到如下输出:Macintosh Granny Smith Cortland 在这最后一个例子中,我们来看看C#的抽象和多态性。首先我们来定义一下这两个新的术语。抽象(Abstract)通过从多个对象提取出公共部分并把它们并入单独的抽象类中实现。在本例中我们将创建一个抽象类Shape(形状)。每一个形状都拥有返回其颜色的方法,不论是正方形还是圆形、长方形,返回颜色的方法总是相同的,因此这个方法可以提取出来放入父类Shape。这样,如果我们有10 个不同的形状需
11、要有返回颜色的方法,现在只需在父类中创建一个方法。可以看到使用抽象使得代码更加简短。在面向对象编程领域中,多态性(Polymorphism)是对象或者方法根据类的不同而作出不同行为的能力。在下面这个例子中,抽象类 Shape有一个 getArea()方法,针对不同的形状(圆形、正方形或者长方形)它具有不同的功能。下面是代码:public abstract class Shape protected string color;public Shape(string color)this.color=color;public string getColor()return color;public
12、 abstract double getArea();public class Circle:Shape private double radius;public Circle(string color,double radius):base(color)this.radius=radius;public override double getArea()return System.Math.PI*radius*radius;名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 6 页 -public class Square:Shape private double sideLen;
13、public Square(string color,double sideLen):base(color)this.sideLen=sideLen;public override double getArea()return sideLen*sideLen;/*public class Rectangle:Shape.略.*/public class Example3 static void Main()Shape myCircle=new Circle(orange,3);Shape myRectangle=new Rectangle(red,8,4);Shape mySquare=new
14、 Square(green,4);System.Console.WriteLine(圆的颜色是 +myCircle.getColor()+它的面积是 +myCircle.getArea()+.);System.Console.WriteLine(长方形的颜色是+myRectangle.getColor()+它的面积是 +myRectangle.getArea()+.);System.Console.WriteLine(正方形的颜色是+mySquare.getColor()+它的面积是 +mySquare.getArea()+.);我们创建的第一个类是Shape。这是一个抽象类,因为我们不想创建
15、这个类的实例,我们要创建的是它的派生类的实例。我们从所有的形状(圆、长方形、正方形)提取出共同特征到Shape 类。Shape 类有一个实例变量color,它的变量声明中带有protected 修饰符。protected 修饰符表示这个变量只能在类的内部或者该类的派生类中访问。紧接这个变量声明的就是 Shape类的构造函数和存取方法getColor(),这两个方法都没有什么新的东西。最后一个方法getArea()加上了 abstract 修饰符,这是因为每一种不同的形状都有不同的面积计算方法,因此这个方法必须由各种形状自己来定义。接下来的三个类Circle、Rectangle 和 Square
16、都从 Shape类派生,它们都具有Shape所描述的特征。这可以从它们的定义中看出来,它们的声明中都带有“public class:Shape ”,这个“:Shape”就表示当前的类从Shape类派生。由于这三个类都从Shape派生,它们自动拥有 Shape中定义的所有public 或者 protected 实例变量,即 Circle、Rectangle和 Square 包含了实例变量color。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 6 页 -每一个 Sharp 的派生类都有自己的构造函数,负责调用父类Shape的构造函数设置公共的实例变量(color)以及设置自己特有
17、的实例变量。例如“public Circle(string color,double radius):base(color)”这个语句中,“:base(color)”就表示用参数color 调用父类的构造函数。最后我们来看一下getArea()方法,它是一个多态性的示范。所有形状都有getArea()方法,但是根据对象是圆、长方形还是正方形,具体调用的方法也不同。要运行这个例子,先把所有文件保存到同一目录,然后执行下面的命令:csc/target:library/out:Shapes.dll Shapes.cs Circle.cs Rectangle.cs Square.cs 然后执行:csc/reference:Shapes.dll Example3.cs 现在,如果我们运行Example3.exe,将得到如下输出:圆的颜色是orange 它的面积是28.274333882308138.正方形的颜色是green 它的面积是16.长方形的颜色是red 它的面积是32.名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 6 页 -
限制150内