3.3 学习第一个C#程序

那就让我们开始C#的学习吧!

本节介绍如何生成你的第一个C#程序:这是一个最基本的C#应用程序,程序中的代码在全书中将经常出现。

我们一直坚信,只有不断练习才是最好的学习方式。所以建议读者从本章开始对书中所提供的程序示例,亲自进行编辑、编译和运行,在这个过程中你将获得开发C#程序的有益经验。

3.3.1 编写第一个C#代码

第一个程序总是非常简单的。我们让用户通过键盘输入自己的名字,然后程序在屏幕上打印一条欢迎信息程序。

功能说明:编写第一个C#程序。

程序清单3-4

            using System;
            class Welcome
            {
              static void Main() {
                Console.WriteLine("Please enter your name:");
                Console.ReadLine();
                Console.WriteLine("Welcome to you!");
              }
            }

你可以在任意一种编辑软件中完成上述代码的编写。然后把文件存盘文件名叫做Welcome.cs,典型的C#源文件通常都以.cs作为文件的扩展名。

代码分析:

· using System表示导入名字空间,高级语言总是依赖于许多系统预定义的元素。如果你是C或C++的程序员,那么你一定对使用#include之类的语句来导入其他C或C++源文件再熟悉不过了。C#中的含义与此类似,用于导入预定义的元素,这样在自己的程序中就可以自由地使用这些元素。

· 在程序的第二行,class Welcome声明了一个类,类的名字叫做Welcome。这个程序为我们所做的事情就是依靠它来完成的。

· C#程序必须包含一个Main方法,程序控制在该方法中开始和结束。在Main方法中创建对象和执行其他方法。Main方法是驻留在类或结构内的静态方法。用下列方式之一声明Main方法:该方式返回void。

· 程序所完成的输入输出功能都是通过Console来完成的。Console究竟是什么呢?它是在名字空间中System已经为我们定义好的一个类。这里我们不用管它是怎么完成工作的。只要使用它就可以了。

上面的代码中类Console,为我们展现了两个最基本的方法WriteLine和ReadLine。Console.ReadLine表示接收输入设备输入,Console. WriteLine则用于在输出设备上输出。

注意

在C#程序中程序的执行,总是从Main()方法开始的。一个程序中不允许出现两个或两个以上的Main()方法。对于习惯了写C控制台程序的读者,请牢记C#中Main()方法必须被包含在一个类中。

3.3.2 程序添加注释

应用程序并不是只要你自己一个人能看懂就够了,这里笔者还要再一次强调,养成良好的代码注释的习惯是一名优秀的程序员必备的条件之一。代码注释不会浪费你的编程时间,它只会提高你的编程效率,使你的程序更加清晰完整友好。

注释的方式和C++没有区别,每一行中双斜杠“//”后面的内容以及在分割符“/*”和“*/”之间的内容都将被编译器忽略。

这样我们就可以采用“//”进行单行注释,采用分割符“/*”和“*/”进行多行注释让我们给Welcome程序加上注释。

功能说明:给程序添加注释。

程序清单3-5

            using System;
            class Welcome
            {
              static void Main() {
                Console.WriteLine("Please enter your name:");
                //要求用户输入姓名
                Console.ReadLine();  //读取用户输入
                Console.WriteLine("Welcome to you!");
                /*本行代码用于打印欢迎信息,你可以在这里添加自己的代码,程序在这里结束*/
              }
            }

下面是对程序进行注释时要注意的两个问题。

首先,避免在“//”之后的单行注解中使用反斜杠符号“\”,因为反斜杠符号“\”在C#中是一个续行符,这样做往往会导致你所不希望的结果出现,例如当你写了类似于下面的代码:

            Console.WriteLine("The result is:{0}" , // \
            150 );

在编译这段代码时“//”表示逻辑上同一行剩余的所有文字被作为注释看待,而续行符“\”则将这一行同下一行连接起来,那么第二行也被作为注释的一部分。这时编译器找不到与第一行的左括号“(”相匹配的右括号“)”因此编译出错。

其次,分割符“/*”和“*/”之间的注释不能有嵌套注释。这是因为编译器从遇到第一个分割符“/*”开始将忽略下一个“/*”直到遇上下一个与“*/”之匹配的分割符才认为注释结束,这样编译器就会对多余的“*/”报告错误,认为没有“/*”与之相匹配。

3.3.3 编译程序

理解了源程序中每条代码的具体含义之后,下一步要做的就是让这个程序真正能够运行。不过对源代码即使还有不明白的地方也没有关系,在后续章节的学习中,你最终会熟练掌握这些概念的。

编译程序有两种方式,一种方式是编译程序可以通过在命令行上输入C#编译器的可执行文件(csc.exe)的名称来调用C#编译器。

启动一个命令行提示符在屏幕上输入一行命令:

            csc welcome.cs

另一种是如果电脑上安装了Visual Studio .Net,则可以在集成开发环境Integrated Developer Environment IDE中直接选择快捷键或菜单命令编译并执行源文件,如图3-3所示。

图3-3 集成VS环境编译程序

注意

如果没有设置环境变量,有一种解决方法。在命令行上运行批处理文件%Microsoft Visual Studio .Net %\Vc7\bin\vcvars32.bat。其中%Microsoft Visual Studio .Net是安装Visual Studio .Net的文件夹,如图3-4所示。

图3-4 使用批处理来设置环境变量

注意

我们可以灵活地使用.NET平台提供的命令行编译器的不同选项,选择不同的编译方式,从而灵活地对编译进行控制。

· 如果我们希望对源文件Welcome.cs进行编译生成名为MyWelcome.exe的可执行文件,我们可以采用这样的命令:

            csc/out: MyWelcome.exe Welcome.cs

· 如果我们并不需要一个可执行文件,而仅仅是希望简单地检查源文件中是否存在语法错误,则命令可以写成:

            csc/nooutput: Welcome.cs

· 如果不知道各个选项的具体含义可以通过求助来获得。

            csc/?

表3-1显示了.NET平台提供的所有的编译选项。

表3-1 编译选项

运行结果,如图3-5所示。

图3-5 运行第一个C#程序