.NET Framework 4.0 综合教程
第一部分:概述与背景
1 什么是 .NET Framework?
.NET Framework 是由微软开发的一个软件开发框架,它为构建和运行 Windows 应用程序、Web 服务和网站提供了一个全面的、受管理的执行环境。

你可以把它想象成一个“工具箱”或“平台”,它包含了:
- 一个运行时环境:称为公共语言运行时,它负责管理代码的执行,例如内存管理(垃圾回收)、异常处理、线程管理、安全性等,开发者无需关心这些底层细节,可以专注于业务逻辑。
- 一个庞大的类库:称为框架类库,它提供了成千上万个预先编写好的类,涵盖了从文件 I/O、数据库访问(ADO.NET)、网络通信(HTTP, TCP/IP)到用户界面(Windows Forms, WPF)等几乎所有常见开发任务。
2 为什么是 .NET Framework 4.0?
.NET Framework 4.0 是一个非常重要的里程碑版本,发布于 2010 年,它引入了许多重大变化和新特性,为后续版本(如 4.5, 4.6, 4.7)奠定了坚实的基础。
核心特点:
- 并行扩展:极大地增强了多核处理器上的并行计算能力。
- 动态语言运行时:为动态语言(如 Python, Ruby)提供了更好的 .NET 互操作性,并增强了 C# 和 VB.NET 的动态特性。
- 代码 Contracts:一种在代码中指定前置条件、后置条件和对象不变量的方法,用于静态和运行时验证。
- 对 WPF, WCF, WF 的大幅改进:特别是对 Windows Workflow Foundation 4.0 进行了完全的重写,使其更强大、更易于使用。
- ASP.NET MVC 2:ASP.NET MVC 框架的第二个版本,引入了区域、模板化帮助器等重要特性。
第二部分:开发环境搭建
在学习之前,你需要一个开发环境。

1 必需组件
-
.NET Framework 4.0 运行时:
- 目标用户:只想运行用 .NET 4.0 开发的程序。
- 获取方式:从微软官网下载 Microsoft .NET Framework 4.0 (Offline Installer)。
-
.NET Framework 4.0 开发工具:
- 目标用户:想要编写和编译 .NET 4.0 程序的开发者。
- 获取方式:你需要一个集成开发环境,对于 .NET 4.0,最经典的选择是:
- Visual Studio 2010:这是与 .NET 4.0 完美匹配的官方 IDE,功能非常强大,是目前学习 4.0 的最佳选择。
- Visual Studio 2012/2025:这两个版本也支持 .NET 4.0/4.5 项目,并且拥有更现代的界面和功能,也是不错的选择。
2 安装步骤
- 安装 .NET Framework 4.0 运行时:如果你是开发者,这一步通常可以跳过,因为 Visual Studio 安装程序会自动为你安装所需的 SDK 和运行时。
- 安装 Visual Studio 2010:从微软官网下载 Visual Studio 2010 的安装镜像(Visual Studio 2010 Ultimate 或 Professional 版本),然后按照向导进行安装,安装时,确保勾选了 "Visual C#" 和 "Visual Basic" 等你需要的开发语言组件。
第三部分:核心概念与基础语法
1 第一个程序:Hello, World!
打开 Visual Studio 2010,创建一个新的 "控制台应用程序" 项目。
C# 代码 (Program.cs):

using System; // 引入 System 命名空间,它包含了 Console 类
namespace HelloWorld
{
class Program
{
static void Main(string[] args) // 程序的入口点
{
// 在控制台打印一行文本
Console.WriteLine("Hello, .NET Framework 4.0 World!");
// 等待用户按键,防止程序立即退出
Console.ReadKey();
}
}
}
代码解释:
using System;:告诉编译器我们想使用System这个命名空间里的类,这样我们就可以直接写Console,而不用写System.Console。namespace HelloWorld:命名空间用于组织代码,避免类名冲突。class Program:定义一个名为Program的类,类是 .NET 中代码的基本单元。static void Main(string[] args):这是 C# 程序的入口点,当程序启动时,Main方法会被第一个调用。static:表示这个方法属于类本身,而不是类的某个实例。void:表示这个方法不返回任何值。string[] args:这是一个参数数组,用于接收从命令行传入的参数。
Console.WriteLine(...):调用Console类的WriteLine方法,在控制台输出文本并换行。Console.ReadKey():让程序暂停,等待用户按下任意键。
2 核心概念
-
公共语言运行时
- 内存管理:CLR 使用垃圾回收器 自动管理内存,当你创建一个对象后,如果不再有引用指向它,GC 就会在合适的时机回收它占用的内存,开发者无需手动
free或delete。 - 异常处理:通过
try-catch-finally块来优雅地处理程序运行时发生的错误。 - 即时编译:C# 或 VB.NET 的代码首先被编译成一种中间语言,当程序运行时,CLR 的 JIT 编译器会将 IL 代码编译成特定于操作系统的本地机器码,然后执行。
- 内存管理:CLR 使用垃圾回收器 自动管理内存,当你创建一个对象后,如果不再有引用指向它,GC 就会在合适的时机回收它占用的内存,开发者无需手动
-
基础数据类型
- 值类型:直接存储数据,如
int,double,bool,char,struct,它们通常存储在栈 上。 - 引用类型:存储对数据的引用(内存地址),如
class,string,array,delegate,它们通常存储在堆 上,变量本身在栈上只保存一个引用。
- 值类型:直接存储数据,如
-
面向对象编程
- 类:创建对象的蓝图或模板。
- 对象:类的实例。
- 封装:将数据(字段)和操作数据的方法捆绑在一起,并对外部隐藏实现细节(通过
public,private,protected等修饰符)。 - 继承:一个类可以继承另一个类的属性和方法,实现代码复用。
- 多态:允许不同类的对象对同一消息做出响应,主要通过虚方法 和重写 实现。
第四部分:.NET Framework 4.0 新特性详解
这是本教程的重点,我们将介绍 4.0 中最具革命性的特性。
1 并行编程 (Parallel Extensions)
随着 CPU 核心数量的增加,充分利用多核变得至关重要。.NET 4.0 引入了 System.Threading.Tasks 命名空间,让并行编程变得前所未有的简单。
示例:并行计算一个数组的平方
using System;
using System.Threading.Tasks;
using System.Threading;
class ParallelDemo
{
static void Main()
{
int[] numbers = new int[100];
for (int i = 0; i < numbers.Length; i++)
{
numbers[i] = i + 1;
}
// --- 传统串行方式 ---
// var squares = numbers.Select(n => n * n).ToArray();
// --- .NET 4.0 并行方式 ---
// PLINQ (Parallel LINQ) 是最简单的方式
var parallelSquares = numbers.AsParallel().Select(n => n * n).ToArray();
// --- 使用 Task 类 ---
// Task.Run(() => { /* 在后台线程池中运行代码 */ });
Console.WriteLine("并行计算完成,结果前5个元素: " +
string.Join(", ", parallelSquares.Take(5)));
}
}
核心组件:
Parallel.For和Parallel.ForEach:替代传统的for和foreach循环,自动将循环工作分配到多个线程上。Task类:代表一个异步操作,你可以创建Task来执行后台工作,并可以轻松地组合它们(等待多个任务都完成)。- PLINQ (Parallel LINQ):LINQ to Objects 的并行版本,只需在数据源后调用
.AsParallel(),LINQ 查询就会自动并行执行。
2 动态语言运行时 与 dynamic 关键字
DLR 允许 .NET 语言以动态方式与其他动态语言(如 IronPython, IronRuby)和 COM 对象(如 Office 自动化)交互,对于 C# 和 VB.NET 最大的亮点是引入了 dynamic 类型。
示例:动态调用 Python 脚本
你需要安装 IronPython: pip install IronPython
C# 代码:
using System;
using IronPython.Hosting; // 需要添加 IronPython.dll 的引用
class DynamicDemo
{
static void Main()
{
// 使用 dynamic 关键字,绕过编译时类型检查
dynamic engine = Python.CreateEngine();
dynamic scope = engine.CreateScope();
// 执行一段 Python 代码,并定义一个变量
engine.Execute("def greet(name): return 'Hello, ' + name + ' from Python!'", scope);
// 动态调用 Python 函数
dynamic greeting = scope.greet("C# Developer");
Console.WriteLine(greeting);
}
}
dynamic 的作用:
- 与 COM 交互:调用 Office Word, Excel 等时,可以省去繁琐的
Interop代码。 - 动态语言互操作性:如上例所示,调用其他 .NET 动态语言。
- 简化反射:在需要通过字符串名称来调用方法或访问属性时,
dynamic比传统的反射代码更简洁。
3 代码契约
Code Contracts 允许你在方法中嵌入前置条件、后置条件和对象不变量,作为代码设计的文档,并能帮助静态分析工具(如 Pex)和运行时检查发现错误。
示例:
using System.Diagnostics.Contracts;
public class Calculator
{
// 前置条件:b 不能为 0
[ContractInvariantMethod]
private void ObjectInvariant()
{
Contract.Invariant(this.value >= 0); // 对象不变量
}
private int value;
public int Divide(int a, int b)
{
// 前置条件
Contract.Requires(b != 0, "除数不能为零");
this.value = a / b;
// 后置条件:结果不能为负数(这个例子有点牵强,仅作演示)
Contract.Ensures(Contract.Result<int>() >= 0);
return this.value;
}
}
要使用 Code Contracts,你需要安装相应的工具,并在项目属性中启用它们。
第五部分:主要技术栈
1 Windows Presentation Foundation (WPF)
用于构建 Windows 桌面应用程序的 UI 框架,它使用 XAML (eXtensible Application Markup Language) 来定义界面,具有强大的数据绑定、样式、模板和动画功能。
WPF 程序结构:
- App.xaml/App.xaml.cs:应用程序的入口,定义全局资源和启动逻辑。
- Window.xaml/Window.xaml.cs:主窗口的界面和逻辑。
- XAML:描述 UI 元素及其布局的 XML 标记语言。
- C# 代码:处理用户交互、业务逻辑和数据。
2 Windows Communication Foundation (WCF)
用于构建服务导向应用程序的框架,你可以使用 WCF 来创建各种类型的服务,如 HTTP 服务、TCP 服务、消息队列服务等。
核心概念:
- 服务:一个提供特定功能的终结点集合。
- 终结点:客户端与服务交互的地址,由三部分组成:地址、绑定、契约。
- 地址:服务在哪里?
- 绑定:如何与服务通信?(协议、编码等)
- 契约:服务能做什么?(操作和数据)
3 ASP.NET
用于构建 Web 应用程序和服务的框架。.NET 4.0 时代主要有两股力量:
- Web Forms:传统的、事件驱动的 Web 开发模型,类似于 Windows Forms 开发,拖拽控件即可。
- ASP.NET MVC:一种更现代、更符合 Web 工作模式的开发框架,强调关注点分离和测试驱动开发。
第六部分:学习路径与资源推荐
1 学习路径建议
-
基础阶段 (1-2周)
- 掌握 C# 基础语法(变量、数据类型、控制流、方法)。
- 理解面向对象编程的核心概念(类、对象、继承、多态)。
- 学会使用 Visual Studio 进行调试和项目管理。
-
进阶阶段 (2-4周)
- 深入学习 .NET Framework 类库,特别是集合 (
List<T>,Dictionary<K,V>)、文件 I/O、泛型。 - 掌握异常处理和 LINQ (Language Integrated Query)。
- 重点学习:.NET 4.0 的新特性,特别是
Task并行编程和dynamic关键字。
- 深入学习 .NET Framework 类库,特别是集合 (
-
应用阶段 (持续学习)
- 选择一个方向并深入:
- 桌面应用:学习 WPF 的数据绑定、MVVM 模式。
- Web 应用:选择 Web Forms 或 ASP.NET MVC 进行项目实战。
- 服务开发:学习 WCF 的配置和使用。
- 选择一个方向并深入:
2 推荐资源
- 微软官方文档 (MSDN):虽然有些旧,但最权威。
- 书籍:
- 《C# in Depth, Second Edition》- Jon Skeet (深度讲解了 C# 4.0 的新特性)
- 《CLR via C#, Fourth Edition》- Jeffrey Richter (深入理解 .NET 运行时原理)
- 《Pro WPF 4 in C# 2010》- Matthew MacDonald (WPF 经典入门书)
- 在线教程:
- Microsoft Virtual Academy (MVA):有大量关于 .NET 4.0 的免费视频课程。
- Codecademy / freeCodeCamp:提供交互式的 C# 基础语法练习。
- B站/YouTube:搜索 “.NET Framework 4.0 教程”、“C# 基础” 等关键词,有大量中文视频教程。
第七部分:现状与未来
1 .NET Framework 的现状
.NET Framework 4.0 已经是一个非常古老的版本,微软已于 2025年 4月 10日 停止了对 .NET Framework 3.5 SP1 及更高版本(包括 4.0)的支持和更新。
这意味着:
- 安全风险:使用该框架的应用程序将不再接收安全补丁,容易受到攻击。
- 功能过时:缺少最新的语言特性和库支持。
- 兼容性问题:在新版操作系统(如 Windows 11)上可能无法正常运行。
2 迁移建议
对于任何新项目,强烈不建议使用 .NET Framework,微软已经推出了跨平台的、开源的 .NET (.NET 5, 6, 7, 8...)。
如果你维护着一个旧的 .NET Framework 项目,微软提供了现代化的迁移路径:
- .NET Framework 4.8:这是 .NET Framework 的最后一个版本,如果你的项目能升级,先升级到 4.8 是一个相对安全的中间步骤。
- .NET 升级助手:这是一个自动化工具,可以帮助你将 .NET Framework 项目迁移到 .NET 6 或更高版本,它不能解决所有问题,但能自动处理大量重复性工作。
- 面向服务的项目:可以考虑迁移到 Azure Functions 或 ASP.NET Core。
学习 .NET Framework 4.0 的价值在于理解 .NET 的核心思想和历史演进,但对于未来的职业生涯,请务必将重点放在现代的 .NET (.NET 5/6/7/8) 上。
