您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 第02章(C#教程)
第2章C#基础理解了C#的用途后,就可以学习如何使用它。本章将介绍C#编程的基础知识,并假定您具备C#编程的基本知识,这是后续章节的基础。本章的主要内容如下:●声明变量●变量的初始化和作用域●C#的预定义数据类型●在C#程序中使用循环和条件语句指定执行流●枚举●命名空间●Main()方法●基本的命令行C#编译器选项●使用System.Console执行控制台I/O●在C#和VisualStudio.NET中使用注释功能●C#标识符和关键字●C#编程的推荐规则和约定阅读完本章后,您就有足够的C#知识编写简单的程序了,但还不能使用继承或其他面向对象的特征。这些内容将在本书后面的几章中讨论。2.1引言如前所述,C#是一种面向对象的语言。在快速浏览C#语句的基础时,我们假定您已经很好地掌握了面向对象(OO)编程的概念。换言之,我们希望您懂得类、对象、接口和继承的含义。如果以前使用过C++或Java,就应有很好的面向对象编程(OOP)的基础。但是,如果您不具备OOP的背景知识,这个主题有许多很好的信息资源。本书的附录A就详细介绍了OOP。附录A可以从上下载。我们还推荐了《C#入门经典》及其修订版《VisualC#入门经典》(清华大学出版社引进并已出版),详细讲述了面向对象编程和C#。如果您对VB6、C++或Java中的一种语言有丰富的编程经验,就应注意在介绍C#基础知识时,我们对C#、C++、Java和VB6进行了许多比较。但是,您也许愿意阅读一本有关C#和自己所选语言的比较的图书,来学习C#。如果是这样,可以通过从WroxPress网站()下载不同的文档来学习C#。C#高级编程(第3版)•22•2.2第一个C#程序下面采用传统的方式,看看一个最简单的C#程序——这是一个把信息写到屏幕上的控制台应用程序。2.2.1代码在文本编辑器(例如Notepad)中键入下面的代码,把它保存为.cs文件(例如First.cs):usingSystem;namespaceWrox.ProCSharp.Basics{classMyFirstCSharpClass{staticvoidMain(){Console.WriteLine(Thisisn'tatalllikeJava!);Console.ReadLine();return;}}}注意:在后面的几章中,介绍了许多代码示例。编写C#程序最常用的技巧是使用VisualStudio.NET生成一个基本项目,再把自己的代码添加进去。但是,前面几章的目的是讲授C#语言,并使过程尽可能简单,在第12章之前避免涉及VisualStudio.NET。我们使代码显示为简单的文件,这样您就可以使用任何文本编辑器键入它们,并在命令行上对其进行编译。2.2.2编译并运行程序通过对源文件运行C#命令行编译器(csc.exe)来编译这个程序:cscFirst.cs如果使用csc命令在命令行上编译代码,就应注意.NET命令行工具,包括csc,只有在设置了某些环境变量后才能使用。根据安装.NET(和VisualStudio.NET)的方式,这里显示的结果可能与您机器上的结果不同。注意:如果没有设置环境变量,有两种解决方法。第一种方法是在运行csc之前,在命令行上运行批处理文件%MicrosoftVisualStudio.NET%\Vc7\bin\vcvars32.bat。其中%MicrosoftVisualStudio.NET是安装VisualStudio.NET的文件夹。第二种方法(更简单)是使用VisualStudio.NET第2章C#基础•23•命令行代替通常的命令提示窗口。VisualStudio.NET命令提示在“开始”菜单—“程序”—MicrosoftVisualStudio.NET2003-MicrosoftVisualStudio.NETTools子菜单下。它只是一个命令提示窗口,打开时会自动运行vcvars32.bat。编译代码,会生成一个可执行文件First.exe。在命令行或WindowsExplorer上,象运行任何可执行文件那样运行该文件,得到如下结果:cscFirst.csMicrosoft(R)VisualC#.NETCompilerversion7.10.3052.4forMicrosoft(R).NETFrameworkversion1.1.4322Copyright(C)MicrosoftCorporation2001-2002.Allrightsreserved.FirstThisisn'tatalllikeJava!这些信息也许不那么真实!这与Java有一些非常相似的地方,但有一两个地方与Java或C++不同(如大写的Main函数)。下面通过这个程序快速介绍C#程序的基本结构。2.2.3详细介绍首先对C#语法作几个解释。在C#中,与其他C风格的语言一样,每个语句都必须用一个分号(;)结尾,语句可以写在多个代码行上,不需要使用续行字符(例如VB中的下划线)。用花括号({...})把语句组合为块。单行注释以两个斜杠字符开头(//),多行注释以一个斜杠和一个星号(/*)开头,以一个星号和一个斜杠(*/)结尾。在这些方面,C#与C++和Java一样,但与VB不同。分号和花括号使C#代码与VB代码有完全不同的外观。如果您以前使用的是VB,就应特别注意每个语句结尾的分号。对于C风格语言的新用户,忽略该分号常常是导致编译错误的一个最主要的原因。在上面的代码示例中,前几行代码是处理命名空间(如第1章所述),这是把相关类组合在一起的方式。Java和C++开发人员应很熟悉这个概念,但对于VB6开发人员来说是新概念。C#命名空间与C++命名空间或Java的包基本相同,但VB6中没有对应的概念。Namespace关键字声明了应与类相关的命名空间。其后花括号中的所有代码都被认为是在这个命名空间中。编译器在using指令指定的命名空间中查找没有在当前命名空间中定义、但在代码中引用的类。这非常类似于Java中的import语句和C++中的using命名空间语句。usingSystem;namespaceWrox.ProCSharp.Basics{在First.cs文件中使用using指令的原因是下面要使用一个库类System.Console。usingSystem指令允许把这个类简写为Console(类似于System命名空间中的其他类)。标准的System命名空间是驻留最常用的.NET类型的地方。我们用C#做的所有工作都依赖于.NET基类,认识C#高级编程(第3版)•24•到这一点是非常重要的;在本例中,我们使用了System命名空间中的Console类,以写入控制台窗口。注意:几乎所有的C#程序都使用System命名空间中的类,所以假定本章所有的代码文件都包含usingSystem;语句。C#没有用于输入和输出的内置关键字,而是完全依赖于.NET类。接着,声明一个类,它表面上称为MyFirstClass。但是,因为该类位于Wrox.ProCSharp.Basics命名空间中,所以其完整的名称是Wrox.ProCSharp.Basics.MyFirstCSharpClass:classMyFirstCSharpClass{与Java一样,所有的C#代码都必须包含在一个类中,C#中的类类似于Java和C++中的类,大致相当于VB6子句的类模块。类的声明包括class关键字,其后是类名和一对花括号。与类相关的所有代码都应放在这对花括号中。下面声明方法Main()。每个C#可执行文件(例如控制台应用程序、Windows应用程序和Windows服务)都必须有一个入口点——Main方法(注意M大写):staticvoidMain(){这个方法在程序启动时调用,类似于C++和Java中的main函数,或VB6模块中的SubMain。该方法要么不能有返回值void,要么返回一个整数(int)。C#方法对应于C++和Java中的方法(有时把C++中的方法看做是成员函数),它还对应于VB的Function或VB的Sub。这取决于方法是否有返回值(与VB不同,C#在函数和子例程之间没有概念上的区别)。注意,C#中的方法定义如下所示。[modifiers]return_typeMethodName([parameters]){//Methodbody.NB.Thiscodeblockispseudo-code}第一个方括号中的内容表示可选关键字。修饰符Modifiers用于指定用户所定义的方法的某些特性,例如可以在什么地方调用该方法。在本例中,有两个修饰符public和static。修饰符public表示可以在任何地方访问该方法,所以可以在类的外部调用。这与C++和Java中的public相同,与VB中的Public相同。修饰符static表示方法不能在类的特定实例上执行,因此不必先实例化类再调用。这是非常重要的,因为我们创建的是一个可执行文件,而不是类库。这与C++和Java中的static关键字相同,但VB中没有对应的关键字(在VB中,static关键字有不同的含义)。把返回类型设置为void,在本例中,不包含任何参数。第2章C#基础•25•最后,看看代码语句。Console.WriteLine(Thisisn'tatalllikeJava!);Console.ReadLine();return;在本例中,我们只调用了System.Console类的WriteLine()方法,把一行文本写到控制台窗口上。WriteLine()是一个静态方法,在调用之前不需要实例化Console对象。Console.ReadLine()读取用户的输入,添加这行代码会让应用程序等待用户按下回车键,之后退出应用程序。在VisualStudio.NET中,在这种情况下,控制台窗口会消失。然后调用return退出该方法(因为这是Main方法)。在方法的首部指定void,因此没有返回值。Return语句等价于C++和Java中的return,也等价于VB中的ExitSub或ExitFunction。对C#基本语法有了大致的认识后,下面就要详细讨论C#的各个方面了。因为没有变量是不可能编写出任何重要的程序的,所以首先介绍C#中的变量。2.3变量在C#中声明变量使用下述语法:datatypeidentifier;例如:inti;该语句声明int变量i。编译器不会让我们使用这个变量,除非我们用一个值初始化了该变量。但这个声明会在堆栈中给它分配4个字节,以保存其值。一旦它被声明之后,就可以使用赋值运算符(=)给它分配一个值:i=10;还可以在一行代码中声明变量,并初始化它的值:inti=10;其语法与C++和Java语法相同,但与VB中声明变量的语法完全不同。如果你是一位VB6用户,应记住C#不区分对象和简单的类型,所以不需要类似Set的关键字,即使是要把变量指向一个对象,也不需要Set关键字。无论变量的数据类型是什么,声明变量的C#语法都是相同的。如果在一个语句中声明和初始化了多个变量,那么所有的变量都具有相同的数据类型:intx=10,y=20;//xandyarebothints要声明类型不同的变量,需要使用单独的语句。在多个变量的声明中,不能指定不同的数据类型:intx=10;booly=true;//Createsavariablethatstorestrueorfalseintx=10,booly=true;//Thiswon'tcompile!C#高级编程(第3版)•26•2.3.1变量的初始化变量的初始化是C#强调安全性的另一个例子。简单地说,C#编译器需要用某个初始值对变量进行初始化,之后才能在操作中引用该变量。大多数现代编译器把没有初始化标记为警告,但C#编译器把它当作错误来看待。这就可以防止我们无意中从其他程序遗留下来的内存中获取垃圾值。C#有两个方法可确保变量在使用前
本文标题:第02章(C#教程)
链接地址:https://www.777doc.com/doc-4533852 .html