第一个C#程序
在文本编辑器中输入下面的代码,把它保存为后缀名为.cs的文件(如First.cs)。Main()方法如下所示:
using System; namespace Wrox { public class MyFirstClass { static void Main() { Console.WriteLine("Hello from Wrox."); } } }
编译并运行程序
对源文件与性C#命令行编译器(csc.exe),编译这个程序:
csc First.cs
如果使用csc命令在命令行上编译代码,就应该注意.NET命令行工具(包括csc)只有在设置了某些环境变量后才能使用。如果没有设置环境变量,有两种解决方法。第1种方法是在运行csc之前,从命令提示符窗口上运行批处理文件%Microsoft Visual Studio 2013%\Common7\Tools\vsvars32.bat。其中%Microsoft Visual Studio 2013%是Visual Studio 2013的安装文件夹。第2种方法是使用Visual Studio 2013命令提示符代替通常的命令提示符窗口。Visual Studio 2013命令提示符在菜单"开始"|"程序"|Microsoft Visual Studio 2013|Visual Studio Tools子菜单下。它只是一个命令提示符窗口,打开时会自动运行vsvars32.bat。
编译代码,会生成一个可执行文件First.exe。在命令行或Windows Explorer上,像运行任何可执行文件那样运行该文件,得到如下结果:
First.exe
详细介绍
在C#中,大多数语句的都以分号(;)结尾,语句可以写在多个代码行上,不需要使用续行字符。用花括号({})把语句组合为块。单行注释以双协杠字符开头(//),多行注释以一条斜杠和一个星号(/*)开头,以一个星号和一条斜杠(*/)结尾。C#区分大小写,也就是说,变量myVar与MyVar是两个不同的变量。
在上面的代码示例中,前几行代码与名称空间有关,名称空间是把相关类组合在一起的方式。namespace关键字声明了应与类相关的名称空间。其后花括号中的所有代码都被认为是在这个名称空间中。编译器在using语句指定的名称空间中查找没有在当前名称空间中定义但在代码中引用的类。
using System;
namespace Wrox
{
在First.cs文件中使用using指令的原因是后面要使用一个库类System.Console。using System语句允许把这个类简写为Console。如果没有using,就必须完全限定对Console.WriteLine()方法的调用,如下所示:
System.Console.WriteLine(“Hello from Wrox.”);
标准的System名称空间包含了最常用的.NET类型。在C#中做的所有工作都依赖于.NET基类。在本例中,使用System名称空间中的Console类,以写入控制台窗口。C#没有用于输入和输出的内置关键字,而是完全依赖于.NET类。
接着,声明一个类MyFirstClass。但是因为该类位于Wrox名称空间中,所以其完整的名称是Wrox.MyFirstCSharpClass:
class MyFirstCSharpClass {
所有的C#代码都必须包含在一个类中。类的声明包括class关键字,其后是类名和一对花括号。与类相关的所有代码都应放在这对花括号中。
下面声明方法Main()。每个C#可执行文件(如控制台应用程序、Windows应用程序和Windows服务)都必须有一个入口点--Main()方法(注意M大写):
public static void Main() {
在程序启动时调用这个方法。该方法要么没有返回值(void),要么返回一个整数(int)。注意,在C#中方法的定义如下所示:
[modifiers] return type MethodName ([parameters]) {}
第一个方括号中的内容表示可选关键字。修饰符(modifiers)用于指定用户所定义的方法的某些特性,如可以在什么地方调用该方法。在本例中,有两个修饰符public和static。修饰符public表示可以在任何地方访问该方法,所以可以在类的外部调用它。修饰符static表示方法不能在类的实例上执行,因此不必先实例化类再调用。这非常重要,因为我们创建的是一个可执行文件,而不是类库。
在本例中,只调用了System.Console类的WriteLine()方法,把一行文本写到控制台窗口上,WriteLine()是一个静态方法,在调用之前不需要实例化Console对象。
Console.ReadLine()读取用户的输入,添加这行代码会让应用程序等待用户按回车键,之后退出应用程序。
然后调用return退出该方法(因为这是Main方法,所以也退出了程序)。