制作网站接单,指数基金是什么意思,域名注册了是永久的吗,广州制作网站公司电话是时候一览C#的庐山真面目了。现在#xff0c;让我们从Hello World开始吧#xff0c;出发#xff01;
1. 一个简单的C#程序
先来看一段最简单的示例代码#xff0c;如代码清单2-1所示。
代码清单2-1 HelloWorldClass.cs
using System;namespace Programmi…是时候一览C#的庐山真面目了。现在让我们从Hello World开始吧出发
1. 一个简单的C#程序
先来看一段最简单的示例代码如代码清单2-1所示。
代码清单2-1 HelloWorldClass.cs
using System;namespace ProgrammingCSharp4
{class HelloWorldClass{static void Main(){Console.WriteLine(Hello World!);}}
}
俗话说实践是最好的老师。本文的所有代码示例都可以直接输入和运行。养成勤于动手并对程序的运行过程和结果进行仔细观察和分析的习惯对于学习一门编程语言是大有裨益的。言归正传先来看看这段代码存在于哪里没错它位于HelloWorldClass.cs文件中这是一个代码文件如果是Visual Basic.NET代码则位于*.vb文件中。在Visual Studio的新建文件对话框中可以选择新建一个空白的代码文件或者一个空白的类文件后者具备了基本的代码框架类似于代码清单2-1。
提示在ASP.NET应用中C#代码位于*.aspx.cs文件中。虽然*.aspx中也可以通过%......%加入代码但不推荐。
代码清单2-1的运行结果如图2-1所示。 接下来我们分析一下这段代码是如何编译和运行的。
2. 编译和运行程序
.NET程序在运行前要经过两次编译第一次编译生成CIL代码的DLL或EXE文件第二次编译JIT生成机器码。有两种方式可将代码编译并生成CIL代码 直接在Visual Studio 2010中编译和运行 通过命令行编译和运行
2.1 在Visual Studio 2010中编译和运行
在Visual Studio 2010中编译和运行分别在两个不同的一级菜单里。其中编译位于生成菜单运行和调试位于调试菜单。
运行程序的方法有两种 调试 运行而不启动调试
这两种方法的区别是前者需要加载调试符号允许在运行过程中中断并单步执行还可以对某些变量进行监控甚至改变其代码并重新计算后者仅仅编译并运行无法对程序进行调试仅适合在需要查看运行效果时使用。
在Visual Studio 2010中可以通过三种途径来编译和运行一段程序 菜单展开调试菜单点击启动调试菜单项或者点击开始执行不调试如图2-2所示。 工具栏点击工具栏上的相关按钮直接运行如图2-3所示。 快捷键按F5键启动调试运行如果按CtrlF5键运行但不调试。
提示一般不需要特意去编译当你修改了源代码再次运行的时候Visual Studio也会先保存并编译然后开始运行。
2.2 通过命令行编译和运行
首先启动Visual Studio 2010的命令提示应用程序方法是单击开始依次指向所有程序→Microsoft Visual Studio 2010→Visual Studio Tools最后单击Visual Studio命令提示2010。在弹出的命令行窗口中输入csc.exe/?并回车如果显示如图2-4所示的信息则表示环境变量已配置正确。 csc.exe的语法为csc [options] sourceFiles其中sourceFiles表示一个或者多个C#源文件。
我们输入如下命令对代码进行编译
D\csc /outD\HelloWorld.exe D\ProgrammingCSharp4\Chapter3\HelloWorldClass.cs
现在已经在D盘根目录下生成了HelloWorld.exe文件。大家回顾下第这里生成的HelloWorld.exe文件是CIL代码而非本机码。
上述命令行的示意图如图2-6所示。 3. 详细介绍
接下来我们将对代码清单2-1进行详细说明。代码虽然简单但涉及几个重要的知识点。在后面的章节中我们也将使用很多的示例代码进行辅助说明这里先提前介绍一些基础知识。
第1行使用了System命名空间Namespace。什么是命名空间呢如果你以前学习过Java那么这里的命名空间就相当于Java中的包Package形象表示如图2-7所示。 可见命名空间中有一个或多个类当然也可以包含其他类型例如接口、结构等。这里以类和命名空间的关系为例一个类可以不在任何命名空间中一个命名空间也可以没有任何类但是一旦将类声明于一个命名空间则最多只能属于一个命名空间而一个命名空间可以包含多个类。为什么要引入命名空间这样一个概念呢主要起分类和限定的作用假如有两个名叫C的类那么编译器怎么知道我们需要使用的是哪个呢这时命名空间的作用就显示出来了可以将它们放置于两个不同的命名空间中例如N7和N8那么就可以使用N7.C和N8.C全限定名来对它们进行区分如图2-8所示。 当大家了解了什么是命名空间以及它的作用后我们就来分析一下代码清单2-1中有哪些部分与命名空间有关。 第1行using关键字的作用就是使用System命名空间也就是告诉编译器当碰到未知的类时到哪里去找。或者换句话说使用了using关键字引入了System命名空间那么当使用该空间中的Console类时就不需要使用System.Console这样的名称而直接使用Console即可。 第3行namespace关键字是定义一个命名空间从第4行开始一直到第12行大括号{}中所有的内容都位于该命名空间之中。 第5行class关键字定义了一个类。什么是类class类是一种类型它封装了一些数据和一些方法。从面向对象的观点来看类就是一个责任和数据的综合体。代码的第5行到第11行定义了一个类类名叫做HelloWorldClass它只有一个静态的入口方法Main()。 第7行这里定义的是一个Main方法它是类HelloWorldClass的唯一方法成员。方法体从第8行开始一直到第10行结束。Main方法不是一个普通的方法它是一个类的入口所谓入口就是说执行过程开始时它由CLR自动调用因此Main方法必须遵循一定的定义规则。Main()方法是执行过程的开始当方法执行结束也就意味着执行过程结束。 第9行C#语言本身没有类库因此它需要.NET框架提供的类库也就是在第1章中讲的BCL。这里的Console类就是我们经常使用的控制台对象使用该类可以将数据输出到控制台。其中WriteLine是Console对象的静态方法负责输出内容到控制台。Console类位于System命名空间它的全限定名是System.Console这里之所以没有使用全限定名秘密就在第一行的代码using System;所以CLR会自动在System命名空间中查找Console类。
我们可以尝试删掉第1行代码此时CLR将不知道去哪里寻找Console类这将产生编译错误。但Visual Studio 2010的代码提示功能IntelliSense可以协助我们导入正确的命名空间如果选择不导入命名空间也可以选择使用类的全限定名——System.Console如图2-9所示。 提示如果你的Visual Studio没有代码提示请打开Visual Studio的Options选项窗口依次定位到Text Editor→C#→Statement completion选项然后选中Auto list members。
图2-10演示了Main方法并给出了Main方法的4种不同形式。 如图2-9所示Main()方法的4种形式体现在它有4种不同的签名。从是否有返回值的角度来分A、B为一组C、D为一组从是否有参数的角度来分A、C为一组B、D为一组。如果使用C、D的形式返回值是一种运行结果的状态提示。一般情况返回值为0表示程序正常结束为1则表示非正常结束。Main()方法的args参数是一个字符串数组存储的是该应用程序执行时后面所带的参数如图2-11所示。 如图2-11所示此时args字符串数组有两个元素 args[0]的值为localhost args[1]的值为Message。
注意Main()方法为静态方法注意不要写作main()方法C#语言对大小写敏感。
4. 小结
本章给大家展示了一段简单的C#程序——HelloWorld它展现了C#的方方面面从命名空间到类再到类的方法以及类的编译及运行最后还介绍了Visual Studio 2010代码提示的一些基本使用技巧。