《C.NET 基础》由会员分享,可在线阅读,更多相关《C.NET 基础(50页珍藏版)》请在金锄头文库上搜索。
1、第2章 C# 基 础理解了 C#的用途后,就可以学习如何使用它。本章将介绍 C#编程的基础知识,并假定您具备 C#编程的基本知识,这是后续章节的基础。本章的主要内容如下: 声明变量变量的初始化和作用域C#的预定义数据类型在 C#程序中使用循环和条件语句指定执行流枚举命名空间Main()方法基本的命令行 C#编译器选项使用 System.Console 执行控制台 I/O在 C#和 Visual Studio .NET 中使用注释功能C#标识符和关键字C#编程的推荐规则和约定阅读完本章后,您就有足够的 C#知识编写简单的程序了,但还不能使用继承或其他面向对象的特征。这些内容将在本书后面的几章中讨
2、论。2.1 引言引言如前所述,C#是一种面向对象的语言。在快速浏览 C#语句的基础时,我们假定您已经很好地掌握了面向对象(OO)编程的概念。换言之,我们希望您懂得类、对象、接口和继承的含义。如果以前使用过 C+或 Java,就应有很好的面向对象编程(OOP)的基础。但是,如果您不具备OOP 的背景知识,这个主题有许多很好的信息资源。本书的附录 A 就详细介绍了 OOP。附录A 可以从 上下载。我们还推荐了C#入门经典及其修订版Visual C#入门经典(清华大学出版社引进并已出版),详细讲述了面向对象编程和 C#。如果您对 VB6、C+或 Java 中的一种语言有丰富的编程经验,就应注意在介
3、绍 C#基础知识时,我们对 C#、C+、Java 和 VB6 进行了许多比较。但是,您也许愿意阅读一本有关 C#和自己所选语言的比较的图书,来学习 C#。如果是这样,可以通过从 Wrox Press 网站(http:/)下载不同的文档来学习 C#。C#高级编程(第 3 版) 22 2.2 第一个第一个 C#程序程序下面采用传统的方式,看看一个最简单的 C#程序这是一个把信息写到屏幕上的控制台应用程序。2.2.1 代码在文本编辑器(例如 Notepad)中键入下面的代码,把它保存为.cs 文件(例如 First.cs):using System;namespace Wrox.ProCSharp.
4、Basicsclass MyFirstCSharpClassstatic void Main()Console.WriteLine(“This isnt at all like Java!“);Console.ReadLine();return;注意: 在后面的几章中,介绍了许多代码示例。编写 C#程序最常用的技巧是使用 Visual Studio .NET 生成一个基本项目,再把自己的代码添加进去。但是,前面几章的目的是讲授 C#语言,并使过程尽可能简单,在第 12 章之前避免涉及 Visual Studio .NET。我们使代码显示为简单的文件,这样您就可以使用任何文本编辑器键入它们,并在
5、命令行上对其进行编译。2.2.2 编译并运行程序通过对源文件运行 C#命令行编译器(csc.exe)来编译这个程序:csc First.cs如果使用 csc 命令在命令行上编译代码,就应注意.NET 命令行工具,包括 csc,只有在设置了某些环境变量后才能使用。根据安装.NET(和 Visual Studio .NET)的方式,这里显示的结果可能与您机器上的结果不同。注意: 如果没有设置环境变量,有两种解决方法。第一种方法是在运行 csc 之前,在命令行上运行批处理文件%Microsoft Visual Studio .NET%Vc7binvcvars32.bat。其中%Microsoft V
6、isual Studio .NET 是安装 Visual Studio .NET 的文件夹。第二种方法(更简单)是使用 Visual Studio .NET 命令行第 2 章 C# 基 础 23 代替通常的命令提示窗口。Visual Studio .NET 命令提示在“开始”菜单“程序”Microsoft Visual Studio .NET 2003Microsoft Visual Studio .NET Tools 子菜单下。它只是一个命令提示窗口,打开时会自动运行 vcvars32.bat。编译代码,会生成一个可执行文件 First.exe。在命令行或 Windows Explorer
7、上,象运行任何可执行文件那样运行该文件,得到如下结果:csc First.csMicrosoft (R) Visual C# .NET Compiler version 7.10.3052.4for Microsoft (R) .NET Framework version 1.1.4322Copyright (C) Microsoft Corporation 2001-2002. All rights reserved.FirstThis isnt at all like Java!这些信息也许不那么真实!这与 Java 有一些非常相似的地方,但有一两个地方与 Java 或C+不同(如大写的
8、Main 函数)。下面通过这个程序快速介绍 C#程序的基本结构。2.2.3 详细介绍首先对 C#语法作几个解释。在 C#中,与其他 C 风格的语言一样,每个语句都必须用一个分号(;)结尾,语句可以写在多个代码行上,不需要使用续行字符(例如 VB 中的下划线)。用花括号( . )把语句组合为块。单行注释以两个斜杠字符开头(/),多行注释以一个斜杠和一个星号(/*)开头,以一个星号和一个斜杠(*/)结尾。在这些方面,C#与 C+和 Java 一样,但与 VB 不同。分号和花括号使 C#代码与 VB 代码有完全不同的外观。如果您以前使用的是 VB,就应特别注意每个语句结尾的分号。对于 C 风格语言的
9、新用户,忽略该分号常常是导致编译错误的一个最主要的原因。在上面的代码示例中,前几行代码是处理命名空间(如第 1 章所述),这是把相关类组合在一起的方式。Java 和 C+开发人员应很熟悉这个概念,但对于 VB6 开发人员来说是新概念。C#命名空间与 C+命名空间或 Java 的包基本相同,但 VB6 中没有对应的概念。Namespace 关键字声明了应与类相关的命名空间。其后花括号中的所有代码都被认为是在这个命名空间中。编译器在 using 指令指定的命名空间中查找没有在当前命名空间中定义、但在代码中引用的类。这非常类似于 Java 中的 import 语句和 C+中的 using 命名空间语
10、句。using System;namespace Wrox.ProCSharp.Basics在 First.cs 文件中使用 using 指令的原因是下面要使用一个库类 System.Console。using System 指令允许把这个类简写为 Console(类似于 System 命名空间中的其他类)。标准的 System命名空间是驻留最常用的.NET 类型的地方。我们用 C#做的所有工作都依赖于.NET 基类,认识C#高级编程(第 3 版) 24 到这一点是非常重要的;在本例中,我们使用了 System 命名空间中的 Console 类,以写入控制台窗口。注意: 几乎所有的 C#程序都
11、使用 System 命名空间中的类,所以假定本章所有的代码文件都包含using System;语句。C#没有用于输入和输出的内置关键字,而是完全依赖于.NET 类。接着,声明一个类,它表面上称为 MyFirstClass。但是,因为该类位于Wrox.ProCSharp.Basics 命名空间中,所以其完整的名称是Wrox.ProCSharp.Basics.MyFirstCSharpClass:class MyFirstCSharpClass与 Java 一样,所有的 C#代码都必须包含在一个类中,C#中的类类似于 Java 和 C+中的类,大致相当于 VB6 子句的类模块。类的声明包括 cla
12、ss 关键字,其后是类名和一对花括号。与类相关的所有代码都应放在这对花括号中。下面声明方法 Main()。每个 C#可执行文件(例如控制台应用程序、Windows 应用程序和Windows 服务)都必须有一个入口点 Main 方法(注意 M 大写):static void Main()这个方法在程序启动时调用,类似于 C+和 Java 中的 main 函数,或 VB6 模块中的 Sub Main。该方法要么不能有返回值 void,要么返回一个整数(int)。C#方法对应于 C+ 和 Java 中的方法(有时把 C+中的方法看做是成员函数),它还对应于 VB 的 Function 或 VB 的
13、Sub。这取决于方法是否有返回值(与 VB 不同,C#在函数和子例程之间没有概念上的区别)。注意,C#中的方法定义如下所示。modifiers return_type MethodName(parameters)/ Method body. NB. This code block is pseudo-code第一个方括号中的内容表示可选关键字。修饰符 Modifiers 用于指定用户所定义的方法的某些特性,例如可以在什么地方调用该方法。在本例中,有两个修饰符 public 和 static。修饰符public 表示可以在任何地方访问该方法,所以可以在类的外部调用。这与 C+ 和 Java 中的
14、public 相同,与 VB 中的 Public 相同。修饰符 static 表示方法不能在类的特定实例上执行,因此不必先实例化类再调用。这是非常重要的,因为我们创建的是一个可执行文件,而不是类库。这与 C+ 和 Java 中的 static 关键字相同,但 VB 中没有对应的关键字(在 VB 中,static 关键字有不同的含义)。把返回类型设置为 void,在本例中,不包含任何参数。第 2 章 C# 基 础 25 最后,看看代码语句。Console.WriteLine(“This isnt at all like Java!“);Console.ReadLine();return;在本例中
15、,我们只调用了 System.Console 类的 WriteLine()方法,把一行文本写到控制台窗口上。WriteLine()是一个静态方法,在调用之前不需要实例化 Console 对象。Console.ReadLine() 读取用户的输入,添加这行代码会让应用程序等待用户按下回车键,之后退出应用程序。在 Visual Studio .NET 中,在这种情况下,控制台窗口会消失。然后调用 return 退出该方法(因为这是 Main 方法)。在方法的首部指定 void,因此没有返回值。Return 语句等价于 C+ 和 Java 中的 return,也等价于 VB 中的 Exit Sub
16、或 Exit Function。对 C#基本语法有了大致的认识后,下面就要详细讨论 C#的各个方面了。因为没有变量是不可能编写出任何重要的程序的,所以首先介绍 C#中的变量。2.3 变变量量在 C#中声明变量使用下述语法:datatype identifier;例如:int i; 该语句声明 int 变量 i。编译器不会让我们使用这个变量,除非我们用一个值初始化了该变量。但这个声明会在堆栈中给它分配 4 个字节,以保存其值。 一旦它被声明之后,就可以使用赋值运算符()给它分配一个值:i = 10;还可以在一行代码中声明变量,并初始化它的值:int i = 10; 其语法与 C+和 Java 语法相同,但与 VB 中声明变量的语法完全不同。如果你是一位 VB6用户,应记住 C#不区分对象和简单的类型,所以不需要类似 Set 的关键字,即使是要把变量指向一个对