背景:                 
[本书目录] [图书首页] [本书讨论区]  
链接地址:http://www.17xie.com/read-58389.html    注册17xie 一起来写书 实现您的出书梦想!

2.2  第一个C#程序

下面采用传统的方式,看看一个最简单的C#程序——这是一个把信息写到屏幕上的控制台应用程序。

2.2.1  代码

在文本编辑器(例如Notepad)中键入下面的代码,把它保存为.cs文件(例如First.cs)

using System;

 

namespace Wrox.ProCSharp.Basics

{

   class MyFirstCSharpClass

   {

      static void Main()

      {

         Console.WriteLine("This isn't at all like Java!");

         Console.ReadLine();

         return;

      }

   }

}

注意:

在后面的几章中,介绍了许多代码示例。编写C#程序最常用的技巧是使用Visual Studio 2005生成一个基本项目,再把自己的代码添加进去。但是,前面几章的目的是讲授C#语言,并使过程尽可能简单,在第14章之前避免涉及Visual Studio 2005。我们使代码显示为简单的文件,这样您就可以使用任何文本编辑器键入它们,并在命令行上对其进行编译。

2.2.2  编译并运行程序

对源文件运行C#命令行编译器(csc.exe),编译这个程序:

csc First.cs

如果使用csc命令在命令行上编译代码,就应注意.NET命令行工具,包括csc,只有在设置了某些环境变量后才能使用。根据安装.NET(Visual Studio 2005)的方式,这里显示的结果可能与您机器上的结果不同。

注意:

如果没有设置环境变量,有两种解决方法。第一种方法是在运行csc之前,在命令行上运行批处理文件%Microsoft Visual Studio 2005%\Common7\Tools\vcvars32.bat。其中%Microsoft Visual Studio 2005是安装Visual Studio 2005的文件夹。第二种方法(更简单)是使用Visual Studio 2005命令行代替通常的命令提示窗口。Visual Studio 2005命令提示在“开始”菜单—“程序”—Microsoft Visual Studio 2005Microsoft Visual Studio Tools子菜单下。它只是一个命令提示窗口,打开时会自动运行vcvars32.bat

编译代码,会生成一个可执行文件First.exe。在命令行或Windows Explorer上,象运行任何可执行文件那样运行该文件,得到如下结果:

csc First.cs

Microsoft (R) Visual C# .NET Compiler version 8.00.40607.16

for Microsoft (R) .NET Framework version 2.0.40607

Copyright (C) Microsoft Corporation 2001-2003. All rights reserved.

First.exe

This isn't at all like Java!

这些信息也许不那么真实!这与Java有一些非常相似的地方,但有一两个地方与JavaC++不同(如大写的Main函数)。下面通过这个程序快速介绍C#程序的基本结构。

2.2.3  详细介绍

首先对C#语法作几个解释。在C#中,与其他C风格的语言一样,每个语句都必须用一个分号(;)结尾,语句可以写在多个代码行上,不需要使用续行字符(例如VB中的下划线)。用花括号({ ... })把语句组合为块。单行注释以两个斜杠字符开头(//),多行注释以一个斜杠和一个星号(/*)开头,以一个星号和一个斜杠(*/)结尾。在这些方面,C#C++Java一样,但与VB不同。分号和花括号使C#代码与VB代码有完全不同的外观。如果您以前使用的是VB,就应特别注意每个语句结尾的分号。对于使用C风格语言的新用户,忽略分号常常是导致编译错误的一个最主要的原因。

在上面的代码示例中,前几行代码是处理命名空间(如本章后面所述),这是把相关类组合在一起的方式。JavaC++开发人员应很熟悉这个概念,但对于VB6开发人员来说是新概念。C#命名空间与C++命名空间或Java的包基本相同,但VB6中没有对应的概念。namespace关键字声明了应与类相关的命名空间。其后花括号中的所有代码都被认为是在这个命名空间中。编译器在using指令指定的命名空间中查找没有在当前命名空间中定义、但在代码中引用的类。这非常类似于Java中的import语句和C++中的using namespace语句。

using System;

 

namespace Wrox.ProCSharp.Basics

{

First.cs文件中使用using指令的原因是下面要使用一个库类System.Consoleusing System指令允许把这个类简写为Console(类似于System命名空间中的其他类)。标准的System命名空间包含了最常用的.NET类型。我们用C#做的所有工作都依赖于.NET基类,认识到这一点是非常重要的;在本例中,我们使用了System命名空间中的Console类,以写入控制台窗口。

注意:

几乎所有的C#程序都使用System命名空间中的类,所以假定本章所有的代码文件都包含using System;语句。

C#没有用于输入和输出的内置关键字,而是完全依赖于.NET类。

接着,声明一个类,它表面上称为MyFirstClass。但是,因为该类位于Wrox.ProCSharp.Basics命名空间中,所以其完整的名称是Wrox.ProCSharp.Basics.MyFirstCSharpClass

   class MyFirstCSharpClass

   {

Java一样,所有的C#代码都必须包含在一个类中,C#中的类类似于JavaC++中的类,大致相当于VB6子句的类模块。类的声明包括class关键字,其后是类名和一对花括号。与类相关的所有代码都应放在这对花括号中。

下面声明方法Main()。每个C#可执行文件(例如控制台应用程序、Windows应用程序和Windows服务)都必须有一个入口点—— Main方法(注意M大写)

      static void Main()

      {

这个方法在程序启动时调用,类似于C++Java中的main函数,或VB6模块中的Sub Main。该方法要么不能有返回值void,要么返回一个整数(int)C#方法对应于C++ Java中的方法(有时把C++中的方法称为成员函数),它还对应于VBFunction VBSub。这取决于方法是否有返回值(VB不同,C#在函数和子例程之间没有概念上的区别)

注意,C#中的方法定义如下所示。

[modifiers] return_type MethodName([parameters])

{

    // Method body. NB. This code block is pseudo-code

}

第一个方括号中的内容表示可选关键字。修饰符(modifiers)用于指定用户所定义的方法的某些特性,例如可以在什么地方调用该方法。在本例中,有两个修饰符publicstatic。修饰符public表示可以在任何地方访问该方法,所以可以在类的外部调用。这与C++Java中的public相同,与VB中的Public相同。修饰符static表示方法不能在类的特定实例上执行,因此不必先实例化类再调用。这是非常重要的,因为我们创建的是一个可执行文件,而不是类库。这与C++Java中的static关键字相同,但VB中没有对应的关键字(VB中,Static关键字有不同的含义)。把返回类型设置为void,在本例中,不包含任何参数。

最后,看看代码语句。

         Console.WriteLine("This isn't at all like Java!");

         Console.ReadLine();

         return;

在本例中,我们只调用了System.Console类的WriteLine()方法,把一行文本写到控制台窗口上。WriteLine()是一个静态方法,在调用之前不需要实例化Console对象。

Console.ReadLine()读取用户的输入,添加这行代码会让应用程序等待用户按下回车键,之后退出应用程序。在Visual Studio 2005中,控制台窗口会消失。

然后调用return退出该方法(因为这是Main方法)。在方法的首部指定void,因此没有返回值。Return语句等价于C++Java中的return,也等价于VB中的Exit SubExit Function

C#基本语法有了大致的认识后,下面就要详细讨论C#的各个方面了。因为没有变量是不可能编写出任何重要的程序的,所以首先介绍C#中的变量。


字数:4354    最后更新:7个月以前 [04-10 20:51]happyskynet 修改
本页编辑者:happyskynet  
[前一页]:第2章 C#基础  [后一页]:2.3 变量
[在本页中加入书签] [收藏本书] [推荐本书]
  17xie论坛 > 本书讨论区 > 本页评论   (共0条)
发表评论

用户名称 匿名发表
评论内容
验证码

关于我们 | 版权声明 | 免责声明 | 诚聘英才 | 联系我们 | 合作伙伴 | 友情链接 | 广告合作 | 提交意见
Copyright © 2007 17xie.com 互联网协同写书平台 京ICP备08002671号