本文共 1679 字,大约阅读时间需要 5 分钟。
本节书摘来异步社区《C#本质论(第4版)》一书中的第1章,第1.1节,作者: 【美】Mark Michaelis , tEric Lippert译者: 周靖 责编: 杨海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。
C#本质论(第4版)
学习新语言最好的办法就是动手写代码。第一个例子是经典HelloWorld程序。这个程序在屏幕上显示一些文本。代码清单1-1展示了完整的HelloWorld程序,在之后的小节中还将介绍代码的编译方法。
代码清单1-1 用C#编写的HelloWorld1
**class** HelloWorld{**static void** Main(){System.Console.WriteLine("Hello. My name is Inigo Montoya.");}}
注意
C#是区分大小写的语言;大小写不正确,会使代码无法成功编译。
有Java、C或者C++编程经验的读者很快就能看出相似的地方。类似于Java,C#也从C和C++继承了基本的语法2。语法标点(如分号和大括号)、特性(如区分大小写)和关键字(如class、public和void)对于这些程序员来说并不陌生。初学者和有其他语言背景的程序员通过这个程序能很快体会到这些构造的直观性。编译并运行应用程序
C#编译器允许为C#源代码文件使用任何文件扩展名,但一般使用.cs。将源代码保存到文件后,开发者必须编译它(附录A会指导你安装编译器)。由于C#标准没有规定命令机制,所以实际的编译命令取决于C#编译器的实现。
假定将代码清单1-1的代码放到一个名为HelloWorld.cs的文件中,而且使用的是Microsoft.NET编译器,编译器的路径也已设置好,就可以执行如输出1-1所示的编译命令。{![]使用Mono编译器(开源编译器,网址是www.mono-project.com)进行编译,命令几乎一样,只是编译器名称是mcs.exe,而不是csc.exe。虽然我个人很乐意给出在每种平台下使用的命令,但这样会使读者分心。请参见附录A了解Mono的详情。}
输出1-1
>csc.exe HelloWorld.csMicrosoft (R) Visual C# Compiler version 4.0.30319.17626for Microsoft (R) .NET Framework 4.5Copyright (C) Microsoft Corporation. All rights reserved.
具体输出将取决于所用的编译器的版本。
运行生成的程序HelloWorld.exe,将显示如输出1-2所示的消息。
输出1-2
>HelloWorld.exeHello. My name is Inigo Montoya.
C#编译器创建的程序HelloWorld.exe是一个程序集(assembly)。虽然在这个例子中创建的是一个能独立运行的程序,但也可以不这么做,而是创建能由另一个较大的程序引用的代码库。库(或称为类库)的文件扩展名是.dll,其中dll代表“动态链接库”(Dynamic Link Library,DLL)。库也是一个程序集。换言之,一次成功的C#编译生成的肯定是程序集,无论它是程序还是库。
语言对比:Java——文件名必须和类名匹配
在Java中,文件名必须和类名一致。C#虽然也常常遵守这一约定,但却不是必需的。在C#中,一个文件可以包含多个类;而且从C# 2.0开始,一个类的代码可以拆分到多个文件中。
1如果不知道Inigo Montoya是谁,请找《公主新娘》(The Princess Bride)这部电影来看一看。
2设计C#时,语言的创建者从C/C++规范中删除了他们不喜欢的一些特性,同时创建了他们喜欢的一些特性。开发组还有其他语言的资深专家。本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。