C#,深入浅出全接触
青苹果工作室(编译)
目 录 表
一、什么是 C#?
二、Java 与 C#
三、C#的主要特征
四、安装运行环境
五、C#编辑器
六、C#的程序结构
七、C#和名称空间
八、C#中一个经典例程的编写与编译
九、C#编程实战演习 ABC
1、使用 Visual Studio .NET 编写 C#程序
2、使用 Visual C#创建 Windows 应用程序
3、创建 C#类库(Dll)
一、什么是 C#?
C# 是由 Microsoft 开发的一种新型编程语言,由于它是从 C 和 C++ 中派生出来的,因此具有
C++的功能。同时,由于是 Microsoft 公司的产品,它又同 VB 一样简单。对于 web 开发而言,
C#象 Java,同时具有 Delphi 的一些优点。Microsoft 宣称:C#是开发.NET 框架应用程序的最
好语言。
二、Java 与 C#
要学习 C#,不能不首先看一看 Java 语言。
相对于其他编程语音,Java 有一个无庸置疑的优点:用户以及编译器第一次不必了解生成可执行代码的
特定 CPU 细节。Java 引入了一个编译代码中间层,叫做字节代码,并使用一个虚拟抽象的机器,而不是
一个真实的机器。当 Java 编译器结束了一个源文件的编译后,你所得到的不是可以立即在一个给定平
台上运行的代码,而是可以在任何真实的平台上运行的字节代码,唯一的条件就是这个平台要理解和支
持 Java。这些发展包含着一个文化的变革。作为一个开发人员,你只需要确定 Java 虚拟机(JVM)提供的
抽象层,不同的 OS 销售商负责执行代码层,从而将中立于平台的字节代码映射到主机平台的机构中。
在这种情况下,Java 似乎是统一分布式计算机世界的领袖候选人了。“编写一次,永远运行”(并且无
论在哪里)一度成为 Java 诱人但却真实的口号。
那么为什么说 Java 只是“似乎”是一个好东西呢?跨平台理论的发展很好地证明了这一点。我们看
到,将 Java 代码从一个平台移植到另一个平台—Java 这个语言最重要和最受吹捧的特点—并不象宣传
的那样容易。任何 Java 平台都有其自己的虚拟机,它可以理解通用的字节代码,并且及时地将其编译
为本地代码。矛盾由此产生,不同虚拟机的执行也很不相同,这一点足以使代码的移植比预期耗费多得
多的时间,而且基本上不是自动的。
那么,Java 模型的好处在哪里呢?首先,Java 是一种先进的、面向对象的语言,包含了预防常见错误
的内置功能,并在仅仅一两个对象中携带了许多经常需要用到的功能。与 C++相比,Java 更易于读写,
不容易出错,而且更加美观,但是它速度较慢也不太灵活。想实现在任何软件和硬件平台上都可虚拟移
植,Java 尽可能少地使用了公分母模型,也就是说放弃了将每个平台开发到极限的能力。第二,虚拟机
的概念本身就是可移植和可共用的,因此对于分布式环境来说是理想的。Java 对于为非 Windows 平台开
发代码是最好的语言。
那么对于 Windows 平台来说,Java 又怎么样呢?让 Java 适应 Windows 是不可能的,这是由于 Sun 的许
可约束问题。但是 Java 实在是太吸引人了,Microsoft 比谁都能更清楚这一点。因此,Microsoft 又一
次采取了“拿来主义”的手法,很好地利用了 Java 的众多特性,隆重推出了 Windows 平台的新锐力
量,它就是相当简单但十分强大的面向对象的 C#编程语言。C#超过了 C++,它天生就包含了.NET 框架类
库中的所有类,并使语法简单化。
可以说,Java 具备的优点,C#都可以或者都将具备!
三、C#的主要特征
C# 是.NET 的关键性语言,它是整个.NET 平台的基础。与 C#相比,.NET 所支持的其它语言显然是配角
身份。比如,VB.NET 的存在主要是对千万个 VB 开发人员的负责。对于 JScript.NET 和 Managed C++ 也
同样可以这么说,后者只是增加了调用.NET 类的 C++ 语言。C#是唯一没有在设计思路中加入了前辈语
言某种遗传的新事物。
.NET 平台将 C#作为其固有语言,重温了许多 Java 的技术规则。C#中也有一个虚拟机,叫做公用语言运
行环境(CLR),它的对象也具有同样的层次。但是 C#的设计意图是要使用全部的 Win32 API 甚至更多。
由于 C#与 Windows 的体系结构相似,因此 C# 很容易被开发人员所熟悉。
Java 的目的是要拯救分布式计算世界,C# 则不同。C#本质上是 C++的进化产物,使用了包括声明、表
达式及操作符在内的许多 C++特征,但是 C#还有更多的增强功能,比如类型安全(type-Safe)、事件
处理、碎片帐集、代码安全性等。在 C#中,除了可以使用许多 API,更能使用.NET 类。特别地是,我们
可以处理 COM 的自动化和 C 类型的函数。
C#还让你调用无管理的代码,也就是在 CLR 引擎控制之外的代码。这种不安全的模式允许你操作原始指
针来读和写内置碎片帐集控制以外的内存。
四、安装运行环境
安装.NET SDK 是在机器上运行 C# 的第一步。.NET SDK 可以安装在 Windows ME、
Windows NT 或 Windows 2000 上,但是最好的选择是 Windows 2000 上。选择了操作系统
后,再执行以下步骤:
• 安装 IE 5.5
• 安装Microsoft .NET Framework SDK。它是免费的,可以从以下站点下载.
NET
Framework SDK
.
• 完成以上安装后,就可以在任何文本编辑器中编写代码了,最后保存为扩展名为.cs 的文
件。
五、C# 编辑器
编写C#程序可以在文本编辑器中进行,或者在集成开发环境Visual Studio中进行。市场上还有一
些第三方编辑器,其中一些是免费的。更多信息请查看
这里。
六、C#的程序结构
一个 C#程序包含一个类,这个类中至少有一个公用的静态方法 Main,这个方法对程序进行初始化并终
止程序。在 Main 方法中创建子对象、执行方法并实现软件的逻辑处理。下面是一个典型的微型 C#例
程:
using System;
class MyFirstApp
{
static int Main(String[] args)
{
System.Console.WriteLine ("Hello .NET");
return 1;
}
}
在 C#中,要使用下面的声明来引入外部定义,而不是用象 C++中的#include:
using System;
using System.Data;
然后,使用 C#编译器 csc.exe 编译代码。假定将前面的代码保存为文件 hello.cs,使用以下命令:
csc hello.cs
结果就生成了 hello.exe,它向控制台输出窗口写入信息 "Hello .NET"。
尽管编译后的结果文件包含.exe 后缀,但 hello.exe 却不是一个真正的、明确的 CPU 代码段。实际上,
它包含了.NET 字节代码。当启动 hello.exe 时,CLR 将提取编译器写入代码中的重要元数据。接着,一
个叫做 Just-In-Time 编译器的模块将代码映射到特定的 CPU 中,开始实际的执行过程。
七、C# 和名称空间
实际中的 C#程序通常包含多个文件,其中每个文件都可以包含一个或多个名称空间。一个名称空间就
是一个名字,它向编译器描绘出一些软件实体,如类、界面、枚举以及嵌入的名称空间。名称空间和数
据类型一样必须有唯一的名称。在一个 C#程序中,可以通过一个元素的完整资格名称来识别它,这个资
格名称表明出层次关系。例如,System.String 是 .NET String 类型完整的资格名称。但是为了简化代
码起见,只要声明正在使用 System 名称空间:
using System;
就可以使用一个相对名称如 String 来作为完整名称的同义词,而最后依然代表 System.String。
通过使用 namesapce 关键字,我们还可以将 C#程序或者类包裹在自身的名称空间中,比如:
namespace MyOwn
{
using System; // for String
class MyFirstApp
{
static int Main(String[] args)
{
System.Console.WriteLine ("Hello .NET");
return 1;
}
}
}
名称空间 MyOwn 是全局名称空间的一部分。调用它不需要再使用前缀,因为其完整资格名称就是简单
的 MyOwn。定义一个名称空间是保持公共名称唯一性的一个途径。实际上,如果两个类的名称发生冲
突,但只要它们分别属于不同的名称空间,两个类仍然是各自唯一的。
八、C#中一个经典例程的编写与编译
1、编写代码
“Hello World”几乎是学习任何一门编程语言都要涉及的第一个例程。下面也让我们用 C#完成
这个工作。在上面提到的任意一个 C#编辑器中(比如写字板),键入以下代码:
using System;
class MyClass
{
static void Main() {
Console.WriteLine("Hello World!");
}
}
然后保存为文件 myclass.cs。
2、编译程序
注意:C#编译器要要求至少一个自变量,比如文件名。假设你的 C# 文件名是 myclass.cs,现
在用命令行程序 csc.exe 来编译上面的 myclass.cs 文件:
csc myclass.cs
于是,C# 编译器在工程文件的 bin 目录下生成了一个 myclass.exe 文件。运行这个 exe,看输
出是什么。
3、代码含义
下面我们逐行看看这些代码的含义:
程序的第一行是 using System。为什么要 using System 呢?因为 System 是存储系统类的名称
空间,程序中用来在控制台上显示输出的 Console(控制台)类就是在 System 名称空间中定义
的。
评论0