NET 简介、Hello World 和 .NET Runtime 一瞥

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
Dr. GUI.NET #0
.NET 简介Hello World 和 .NET Runtime 一瞥
什么是 .NET
Dr. GUI 对 .NET 框架的回顾
全新的开始而不用从头再来:.NET Runtime
现在学习 .NET 的原因
运行 Beta 1 所需的条件
编写 .NET 程序
Hello World.NET
实践与探讨

Dr. GUI 回来写教程了!
如果您是 Dr. GUI 的 COM 和 ALT 系列栏目的忠实读者,那么在过去的几个月中或许会想念博士的联机专栏文章。(对了,COM 和 ALT 系列的提前结束要归咎于 Dr. GUI 的经理给博士安排了一项关于电子商务的工作。)

但是至少 Dr. GUI 还继续在 MSDN 新闻(英文)中主持“Ask Dr. GUI”栏目。现在,Dr. GUI 又有了新任务:帮助大家学习 .NET 框架。

那为什么是 Dr. GUI.NET 呢?
“Ask Dr. GUI”的热心读者都知道 Dr. GUI 特别热衷于 Microsoft .NET。现在我们的博士也搞不清楚 .NET 到底包含什么不包含什么。(如果您想弄清楚这一点,请浏览 .NET Web 的正式站点 http://www.microsoft.com/NET/。)这种命名的混乱让人回想起 ActiveX&reg; 时代。只要有促销活动,就会有命名的混乱。Dr. GUI 赞成“ActiveX”中的“X”不发声的主张,只可惜这主张已是昨日黄花。

不管我们的博士是否清楚什么属于 .NET 而什么不属于,以及在未来几年中它还会发生多大的变化,他确实理解对于开发人员至关重要的关键部分:.NET 框架。倒不仅仅是因为他“获取”了这个部分,而是他为之兴奋不已:它将使开发工作更有趣味也更有成效。而且,.NET 框架在未来的几年中将不断获得改进,它不会消亡的。

.NET 框架的不幸之处就是迄今为止它尚未上市。现在仅仅能够得到技术和 Visual Studio.NET 的第一个 Beta 版,您可以在 .NET 的大本营:MSDN 的 .NET 开发人员中心的网站 http://msdn.microsoft.com/NET/ 上获得它。您可以只要 .NET 框架SDK 或者连同整个 Visual Studio.NET。Visual Studio.NET 包括了 .NET 框架SDK。这一点我们以后再聊。

它是真的吗?
您或许会想起 Dr. GUI 有一个原则,就是不为那些不真实的东西写文章。他很少冒险违反这个原则。(我们的博士曾经为 SQL Server&#8482; 2000 和 Windows&reg; 2000 而恼火,他不得不在它们上市之前就写了大量文章。事实证明博士基本上是正确的,大多人只有到能看到实际的产品时才能理解产品。直到现在,他还在为被称为“Dr. Hormel”而伤心。)

那为什么 Dr. GUI 现在就要为 .NET 写文章呢?

原因非常简单:.NET 还未上市,不过它很是真实。您可以成为圈子里第一个下载 .NET 框架(或得到 CD)的人,然后自己先试用一下。您不必把博士的话当真。如果您不是要编写明天就得交付的 .NET 应用程序,也不太介意风险的话,您可以从现在着手,开始用它来进行 2001 年晚些时候才需交付的新项目。这样,您就可以先利用预发布版开始学习 .NET,在它上市之前就做好准备,领先您的同行一大步。

什么是 .NET
现在要指出什么是 .NET 而什么不是还很困难。但是,如果您理解是哪些关键因素推动着 .NET,您也就更容易了解 .NET

世界的变化
想想我们这个行业里出现的一些趋势。很多人正在抛弃没有联网的单台 PC 机,开始使用通过 InterNET 同时连接到多个应用程序的 PC 机以及各种名目繁多的设备。连接到 InterNET 的方式多种多样,有线的、无线的,基带的、宽带的。他们开始期望无论身处何地,无论使用何种设备,都能够以适当的形式获得他们的重要信息。并且,既然能够通过 InterNET 获得信息,他们就希望能把从多个来源获得的数据合成为有意义的信息。最后,他们期望能够从容地使用软件而不必忙于安装和升级,他们还期望这一切远远比过去的 PC 机可靠。

那还只是在客户端机器上发生的变化。InterNET 已经使基于服务器的应用程序得到空前广泛的应用。但是服务器之间的通讯,尤其是在不同平台上运行的服务器之间的通讯特别困难。例如,处理不同的浏览器和浏览器的不同版本时是多么麻烦,更甭提各种不同的无线设备。并且因为大多数真实的 InterNET 应用程序都是以数据库为中心的,方便地访问多种的数据源的能力比以往任何时候都更加重要。

.NET 如何帮助您适应变化
.NET 框架可以使您更轻松地实现这类功能。它包括用于设备的 .NET Compact Framework,这使得在各种设备上而不仅仅是在 PC 上利用 .NET Runtime 成为可能。从最底层开始,.NET 的设计就是以适应 InterNET 的需要为目标,融合了各种 InterNET 标准,包括对 Web 服务的支持,使程序可以方便地从多个站点上获取数据;广泛运用 XML 语言,使得不同计算机系统之间的数据互换变得简单易行。.NET 还使您能够更容易地访问数据,更容易地编写出能在众多不同浏览器和设备上良好运行的 Web 应用程序,而不用再为每种设备或浏览器分别编写程序。最后,.NET Runtime 支持简化和可靠的安装和升级,使用更简便,可靠性更好。它和 .NET Runtime 的安全性及版本管理功能相结合,也提高了可靠性,并使软件可以作为一种服务而不是产品来出售。

使用 Web 服务将数据从多个数据源集成为可以使用的信息
另一个重要的趋势是应用程序为达到某种目的而从多个数据源集成信息。典型的示例就是计划一个商务旅行:您需要机票、租用汽车和酒店。您想去商店购物,并希望所需的每一种商品的价格都符合您的标准,所以需要从三组不同公司中获得数据;您的旅行还需要调整,以便按时到达,且到达时有汽车、有酒店房间(当然要有以太网),并且能及时回家。Web 服务使用 SOAP 和标准的 XML 架构帮助应用程序以业界标准的方式在 InterNET 上通讯,所以应用程序可以使用并共享另一台计算机上的信息,而不管另一台计算机所使用的平台。.NET 框架使编写和使用 Web 服务成为一件非常简单的事情。但是,如果您想要看用 .NET 实现复杂的真实 Web 服务示例,请打开网站 http://terraserver.microsoft.NET/,上面展示了世界各地的地图和航拍照片信息(Microsoft 的 TerraService 工程提供)以及其他信息,如美国人口普查数据。

.NET 还包括 .NET Enterprise Servers 服务器软件,它集成了 .NET 的功能并使它更易于使用。您可以在网站 http://www.microsoft.com/servers/NET/ 上学习更多有关 .NET Enterprise Servers 的知识。

最后还要说明重要的一点,Microsoft 要提供诸如身份验证和日历服务等功能作为 Web 服务,您可以像使用本地对象一样方便地使用它。如果能够以可负担的价格购买所需的功能模块,使用 OPWS(其他人员的 Web 服务,SEC [其他人的代码] 的变种)通常是件好事。您也许有兴趣了解第一个 Microsoft Web 服务,即 Passport 身份验证服务 (http://www.passport.com/Consumer/default.asp?PPlcid=1033),根据点击次数计算,即使是今天,该网站仍是十大 Web 站点之一。但是点击次数是由使用 Passport 来验证用户身份的 Web 站点(例如 Hotmail)在幕后生成的。

所以,.NET 框架使编写新型的应用程序变得更简单,这类应用程序容易安装,并比以前的应用程序更可靠。因为这些程序利用了 Microsoft 和其他公司/人(也许就是您)提供的 Web Services,因此非常强大。

Dr. GUI 对 .NET 框架的回顾
Microsoft 操作系统 API 集的简要历史
使用 .NET 框架编程不同于使用 Win32&reg; API 编程,正如 Windows 编程与 DOS 编程大相径庭。每一个 API 都是某一个时代的产品:DOS API 是八十年代早期的产品;Windows API 是八十年代中期的产品;而 .NET API 是九十年代后期的产品。

DOS
回溯 DOS API 的设计目的,是用于小型计算机系统上众多单一任务操作系统。尽管在微机问世的时代很流行使用 UNIX 和 VMS 操作系统,但微机没有足够的内存或速度来运行这些相对来说较复杂的操作系统。由于内存和速度的限制,诸如 DOS 之类的操作系统主要用汇编语言编写,所以它们尽可能地小而快。DOS 的 API 主要是绝对需要汇编语言(可能通过使用至少部分使用汇编语言编写的运行时库)来调用的软件中断调用(还记得 Int 21h 中断吗?)的集合,系统只提供了数量很少(低分)的服务,主要是面向磁盘和字符输入/输出模式。DOS 只支持单一任务(因此,只能执行单线程),并且 DOS 程序始终控制着计算机系统,当程序无事可做的时候,就循环检测是否有键盘输入。

Windows
Windows API 设计于八十年代早期,那时的美国总统是里根,C 语言是绝大多数系统程序员的首选语言。(某些重要的系统都是用 Pascal 语言编写的,其性能和 C 语言相似。)Stroustrup 的 C++ 编程语言直到 1986 年才出版。那时正在风行“结构化编程”,程序员们学习如何避免使用 goto,直到九十年代,面向对象的编程才开始成为主流。

结果是,只有 C(或 Pascal)程序员才会喜欢 Win32 API。有且仅有一个名称空间,所有的数百个(后来是数千个)API 名称很长,且 API 编写者提出不同的命名惯例以将其分类。这些语言不直接支持抽象的数据类型,所以程序员又提出命名方案,例如 Microsoft 的匈牙利方案(Charles Simonyi 提出),在标识符的前面添加缩写前缀来表示抽象的变量类型(如“i”表示索引,“c”表示计数,它们都用作基础语言类型“int”)。

但是在 Windows 中最重要的差别是使用了图形用户界面,因此必须完全重新调整程序的结构,因为 Windows 支持多任务(尽管不是在 Win16 中的多线程),当程序无事可做的时候,将控制权返回给操作系统。所以,不是由程序始终保持控制,而是将程序重新调整为消息句柄的集合,每个句柄都对来自操作系统的消息(例如,单击鼠标和按键)做出回应,并尽可能快地将回应返回给操作系统,再等待下一条消息。在重新调整应用程序结构以后,Windows 的诸多特性开始发挥作用,如设备无关性和强大的标准化用户界面功能,包括窗口、对话框、控件(如按钮、列表框和编辑控件)以及菜单。

面向对象的编程
在九十年代早期,开始流行面向对象的编程。通过面向对象的编程,可以编写在程序的对象之间具有较好定义的交互和极少量未定义的交互的较大项目。并且对象允许程序员以更有效的方式创建抽象概念,使编程较之以往更上一层。

Visual Basic&reg; 在运行时封装了大量消息路由逻辑,程序员可以使用基于对象的方式,通过让 Visual Basic 程序员集中编写消息处理函数来进行 Windows 编程。当 C++ 成为流行语言时,诸如 MFC 的类库允许允许程序员使用应用程序框架提供的大量默认交互来将 Windows 应用程序编写为交互对象组。

在面向对象的编程思想广泛传播之前,用 Visual Basic 和 MFC 程序编写的 API 仍然是 Windows API。(公正地说,实际上 Windows 包含了面向对象的概念。)但是,Visual Basic 和 MFC 运行时库的大小证明了一个事实,那就是需要越来越多的努力去弥补面向对象编程思想和旧编程思想(单层 API 集)之间的差距。

组件
九十年代中期开始流行一种新概念:软件可以由可互换的组件构成,一套组件可以装配出音频系统或家庭影院。这个观点是通过严格定义接口和根据明确定义的约定来实现的,您可以用相对容易的方法混合和装配软件的组件。

支持基于组件的编程思想要求对 Windows、OLE 和 COM 中的单层 API 附加新内容。某些附加内容非常复杂,因为基于 C 的 API 从来不会自动支持诸如软件对象的动态创建和对象的自动生存期管理等操作,不必提及 C 语言和 C++ 语言可用于编写单片机的应用程序,这些应用程序不是由一组组件构成的。

因此,编写组件成为非常乏味的工作,并且需要文件和转换器以弥补语言并不真正支持基于组件的编程这个缺憾。尽管 Visual Basic 和诸如 ATL 之类的库减轻了编写组件的乏味性,但许多高级的(但是有趣的)操作仍然相当困难。而且新版本组件常常由于 Windows 缺少支持灵活处理不同版本的特性而导致现有的应用程序中断。

如此多的功能,如此少的通用性
最后,在这段时间里有各式各样的 API 被添加到 Windows 中,致使编程模型中出现巨大的矛盾,甚至原始的 Windows API 也出现了一些矛盾,看一下窗口、菜单和控件的处理与设备环境、画笔、字体和画刷的处理之间的差异就能了解。但更严重的问题是:在 Windows 中大概有六种(也许更多,Dr. GUI 还未仔细计数)处理错误的不同方式。大概有六种字符串类型。这仅仅是冰山的一角而已。

很清楚,在杂乱无章的 API 编程模型和对基于组件的程序和 InterNET 编程的巨大支持的需求之间,恰恰是一种新型的、明确设计的、协调的现代 API 成熟的时机。Microsoft 推出了 .NET 框架以解决这些问题。

全新的开始而不用从头再来:.NET Runtime
正如八十年代后期停止以旧的 DOS 方式编写程序一样(什么?放弃 TSR?),现在是时候让 Windows 程序员们考虑一下了,摆脱使用单层、过时的 Windows API,转而使用新型的、面向对象且基于组件的 API。Dr. GUI 建议您尝试一下 .NET 框架和 Runtime 以便了解现代的 Runtime 是如何工作的。

基于组件成为核心
若要理解 .NET Runtime,您必须理解 .NET Runtime 的设计目的是直接在 Runtime 中为现代基于组件的编程提供第一手支持。换句话说,全部是围绕组件进行的。如果您理解这一点,理解为什么要将 .NET Runtime 设计成现在的样子就简单多了。

正如在 Windows 中添加了对窗口、控件、图形和菜单的直接支持,为基于消息的编程添加了底层结构,为支持设备无关性添加了抽象内容一样,.NET Runtime 直接支持组件(包括属性和事件)、对象、继承性、多态性和接口。它还提供支持以允许您使用二十多种不同编程语言中的任一种,仍然用非 .NET 代码交互,而且不管这些代码是在您本机上运行还是在不同的计算机上运行。换句话说,.NET 代表了一种全新的、现代化的起点,且不必从头再来:您可以使用多种语言,从熟悉的语言到外来的语言,并继续使用旧的组件和 DLL 而不用对其进行修改。您甚至可以象使用任何 COM 对象一样使用 .NET 组件,这样新的 .NET 代码可以和旧的 COM 应用程序一起使用。(您也许想要将这种语言的灵活性与易于协作性与市场上的其他运行时系统,尤其是那些以“J”开头的遗留代码对比)。

.NET Runtime 的其他主要功能的设计目的是为组件开发提供第一手支持。对属性和事件的直接支持使得基于组件的编程变得更简单,而不需要特殊的接口和适配设计模式。自动内存管理处理棘手的对象生存期问题。序列化支持允许以多种格式编写“冻干”组件,包括基于业界标准 XML 的 SOAP(并不只是专利二进制格式),并且以后重新组织它们。有了调用和创建业界标准 Web 服务的能力,您可以向 InterNET 上任何地方、使用任何设备的任何人展示组件,也可以使用 InterNET 上任何地方的任何设备上的组件。例外提供了处理错误条件的有力、协调的方式。每个模块都具有内置的完整元数据,这意味着诸如动态创建和方法调用之类的功能更容易,也更安全。(.NET 甚至允许您灵活地创建和执行代码。)您可以控制应用程序使用的组件的版本,这使应用程序更可靠。最后,该代码是与处理器无关的和易于验证的中间语言 (IL),而不是某一种特定的机器语言,这意味着组件不但可以在多种计算机上运行,而且可以确保组件不会覆盖它们不使用的内存,也不会潜在地导致系统崩溃。

.NET Runtime 包含这里提到的每一个关键特征,所以,您可以很容易地编写出有活力的面向对象的组件。

请稍等,还有很多内容!
.NET Runtime 除了提供全部强大的组件支持功能外,还包括大量的类,其设计目的是提供解决现代编程问题的底层结构,包括与 ASP.NET 协同工作的复杂的、基于组件的 Web 服务器应用程序支持(并支持将各种各样的浏览器和移动设备作为客户),XML 支持,增强的数据库访问等等。

并且很快就要被标准化
最后,.NET Runtime 的主要部分,即公共语言基础结构 (CLI) 随同 C# 语言和 IL 格式一起正处在由欧洲计算机制造协会(ECMA,标准化 JavaScript 和 JScript&reg; 的组织,http://www.ecma.ch/ecma1/stand/ecma-262.htm)标准化的过程中,这将为其他公司在不同平台上开发兼容的 .NET 实现铺平道路。关于 C# 和 CLI 标准化的详细信息,请参见 http://msdn.microsoft.com/NET/ecma/。

现在学习 .NET 的原因
既然 .NET 还未正式上市,为什么要下载或定购 .NET 的 Beta 1 版,并且从现在就开始学习它?

简而言之,您已经有了很好的机会成为最先尝试 .NET 并在它正式上市前已经准备就绪的人。对 Dr. GUI 来说,这是令人振奋的:您看,博士以前总在 Windows、MFC、COM 和 ATL 的潮流后面苦苦追赶,他多么希望自己能够早一点学习这些技术。这一次,它充分利用这次机会率先窥探 .NET 的秘密。

抓住学习 .NET 的机会
所有早期的迹象都表明 .NET 框架必将成为高效且大受欢迎的编程平台,所以它很快就会得到广泛应用。早一点学习,就会处于有利于地位。在其他人对它还不甚了解的时候,您已经能熟练和高效地运用这项新技术工作。顺便说一句,编写 .NET 程序既简单又有趣。

Dr. GUI 的指示:.NET 的练习每周只需一小时
...让程序更健壮
因为 .NET 才出现不久,而且还未正式上市,Dr. GUI 建议您先走一步,就是:每周抽出一小时学习 .NET

这些教程文章每月发表两次,其中包含的练习能帮助您真正地了解您所阅读的内容。所以,假设您花一小时来阅读这些文章(越往后阅读文章所花的时间会越少),一、两小时来做练习,那么您付出相对较小的努力就能学到一些有用的新技术——平均每周一小时。

每周花费一小时学习,您得到的是关于 .NET 框架的牢固知识。您将对它的工作方式了如指掌,并且在 .NET 平台上编程得心应手。

和一个(两个,或更多)朋友一起做
一个有经验的伙伴能够帮助您处理许多问题,和您的朋友或同事一道学习 GUI.NET 将有助于您更好地完成学习,乐趣也更多。和一群人一起学就更好了。可以成立一个讨论小组,或者只是在完成每套练习时(或有问题而难以继续时)互传电子邮件。

我们将讨论的内容
由于 .NET 框架非常巨大,您可能会感到疑惑,我们将讨论些什么,什么时候讨论?

我们将从最基本的内容开始这个专栏。您已经阅读过关于 .NET 框架要解决的问题。下一步,我们将讨论 .NET Runtime 的各个方面,包括必要的“Hello World”程序,还将简单介绍元数据和中间语言 (IL)——.NET 的机器语言。

下一次,我们将开始讨论 .NET 框架的基础,包括所有类的父类,System.Object。我们还要讨论垃圾回收和一些关于接口的内容。

在此之后,将用几篇文档讨论如何使用 .NET 框架和 Runtime 的基础:数据类型、例外、文件和网络 I/O、序列化、线程和计时器以及调试。

然后,我们将了解 Windows 程序员熟悉和喜爱的图形用户界面类。

.NET 框架中有许多用于访问数据库、XML 和 Web 应用程序的重要特征,但是博士目前计划让别人讨论这些问题。

每个专栏都有一个示例程序、示例的解释以及您可以尝试完成的练习,所有示例都用 C# 语言编写,集中说明较大的概念,以便您能够更好地理解 .NET 深处的设计技巧。

使用 C# 语言的原因
既然 .NET 支持大约二十种语言,为什么 Dr. GUI 所有关于 .NET 的专栏都使用称之为 C# 的新语言来编写?原因非常简单:正如 C 语言是用来编写 Windows 程序的,C# 语言是用来编写 .NET 程序的。.NET 框架中的大多数内容都是使用 C# 语言编写的,但是您可以在 .NET 中使用多种语言编程,用 C# 语言是为了在 .NET 中使用和支持基于组件的编程而特别设计的。同时,C# 语言还是一种非常好的编程语言。它易于使用,但是又没有那些名称以“J”开头的语言所具有的问题。例如,您能够以 C# 语言来编写 swap 函数(在名称以“J”开头的语言中则不能这样做,这是令 Dr. GUI 对那种语言产生反感原因之一)。

另外,通过使用 C#,您在学习 .NET 的同时也学习了 C# 语言。如果您选择使用另一种语言,看以 C# 语言编写的示例不会带来负面影响:.NET 框架和 Runtime 您使用的任何语言都适用。

如果您更愿意使用其他某种语言,将代码转换为您所使用的语言相对来说比较简单。但是 Dr. GUI 这个家伙却没有时间完成这项工作。如果有人想要进行这项工作,Dr. GUI 也许能够提供到您的转换后的代码的链接——但这并非承诺。

运行 Beta 1 版所需的条件
运行 Visual Studio.NET 的 Beta 1 版所需的条件相当简单:计算机的操作系统为 Windows 2000、Windows NT&reg; 4.0、Windows 98 或 Windows Me。(可能会在以后的 Beta 版本中支持其他操作系统,例如 Whistler Beta 版和 Windows 95。)计算机还必须具备相当快的运算速度(要求 PII/450,建议使用 PIII/733)、1 GB 或 2 GB 硬盘空间、128 MB 内存(建议使用 256 MB 内存),至少有 Super VGA (SVGA) 视频和 CD-ROM 或 DVD-ROM 驱动器。如果您只想安装 .NET 框架SDK,CPU 和内存的要求可以稍微低一些;硬盘空间的需求可显著降低(只需 100-200 MB 就足够了)。

您还需要安装 InterNET Explorer 5.5 (http://www.microsoft.com/windows/ie/)、MDAC (ADO) 2.6 (http://www.microsoft.com/data/download.htm) 和 Microsoft Web 服务器。(在控制面板中,单击“添加/删除程序”,然后单击“添加/删除 Windows 组件”。)如果您有 Visual Studio.NET 的 CD,安装程序将自动更新 InterNET Explorer 和 MDAC。

安装说明建议您在非生产用途的计算机上安装。Dr. GUI 没有发现 Visual Studio.NET 和/或 .NET 框架与其他软件之间的不良影响,但是他赞成这个建议:不要在您赖以工作的计算机上冒险使用 Beta 版的软件。事实上,Dr. GUI 在另一台日常很少用的计算机上安装了 .NET 框架。(尽管博士想过当一个冒险者,在他的膝上型电脑上安装。)

获得 .NET 的方式
最容易获得 Visual Studio.NET 和 .NET 框架SDK 的地方是 MSDN .NET 开发人员中心 (http://msdn.microsoft.com/NET/)。

如果仅仅是想要签出 .NET 框架,且具有很快的连接,那么您可以免费下载它(很大,大概 111 MB)。您也可以免费定购它,但您需要负担 CD 的邮寄费用。.NET 框架SDK 包含编译器(甚至 C#!),但不包括集成的开发环境 (IDE)。

但是如果您想要定购 .NET 框架SDK 的 CD,请定购整个 Visual Studio.NET CD 集(其中包含三张 CD,您还是只需负担邮寄费用)。如果您是 MSDN 全球订户,则只能下载 Visual Studio.NET,它的大小约为 1.5 GB,所以必须有真正快速的 InterNET 连接。

安装
绝大部分安装都简单易行,只需单击适当的安装程序或 URL 就可以了。安装程序易于理解而又方便。

不过,还是有一个小技巧:安装 .NET 框架SDK 时,系统将询问您是否注册环境变量,以便可以从命令行生成。请确保选择了这个复选框来注册环境变量,这样才能使用命令行工具。

编写 .NET 程序
Visual Studio.NET 的设计目的是使 .NET 编程变得更简单,除此之外,诸如自动完成语句和拖放窗体编辑之类的功能,使得使用不熟悉的 API 集变得极其简单。

我们将要使用 Visual Studio,但是现在博士要求大家用旧的方式做事:在记事本(或 Visual Studio,如果愿意)中编写源文件,将其保存到磁盘上,然后编译并从命令行运行。这些工作只需要 .NET SDK,而不需要 Visual Studio.NET。使用命令行工具也可以使我们有机会看到产生了什么文件和熟悉某些命令行工具。

注意,因为从 Beta 1(当前版本)到最终上市的版本计划会对 .NET API 做一些重要的改动。所以,您编写的 Beta 1 版代码必须要为在 Beta 2 或最终版本下运行而进行一些修改。但是,现在开始学习的重要概念是不会改变的,所以现在的学习并非徒劳无益。

如何拼写
在 .NET 程序中使用大小写的惯例也许和您所用过的其他语言不同。但是,.NET 的规则极其简单:所有非参数名的标识符和私有域的名称,其每个词的首字母大写,包括第一个。(Microsoft 建议将所有域都设为私有,但是它们也许要通过一个属性公开。)对于参数名称和私有域的名称,其每个词的首字母大写,第一个除外。您必须了解这些规则,因为 .NET 框架名称遵循这些规则,并且某些语言(如 C#)是区分大小写的。

所以,主要的输出函数名为 System.Console.WriteLine,严格遵循大小写规则。System.Console.WriteLine 的格式字符串参数名为 formatString,而不是 FormatString。但是字符串长度属性的名称是 StrLen,而不是 strLen。

对于 Dr. GUI,最困难的事是要记住使用 Main 而不是 main。

Hello World.NET
现在,没有问题了,这里是 .NET 最简单的“Hello World”:

class MyApp {
public static void Main() {
System.Console.WriteLine("Hello, World! (1)");
}
}

类中的所有对象
您首先注意到的可能是 Main 函数是类的成员。在 .NET 中,所有方法必须是类或结构的成员。(下次,我们将详细讨论结构。)这是因为在 .NET 中,组织的基本单位是类型(即类或结构)。Visual C++.NET 的托管 C++ 扩展允许您可以在类之外公开地编写变量和函数,但在类中也可以编写变量和函数:隐含的全局类。 共2页: 上一页 1 [2] 下一页 <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页