C# 零基础到精通教程 - 第一章:C# 与 .NET 世界初探 本教程假设您完全不懂编程不知道什么是变量、函数、循环计算机基础操作没问题会新建文件、下载安装软件、使用命令行基础命令愿意动手每个示例都亲手敲一遍每一章我都会先讲为什么需要这个东西解决什么实际问题再讲是什么定义和概念然后讲怎么用语法和示例最后讲常见坑初学者最容易犯的错误第一章计算机、程序与 C# 的诞生1.1 计算机是如何工作的最简模型在学编程之前我们需要先理解一个最基本的问题计算机到底在做什么1.1.1 计算机的核心三部件text┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ 输入设备 │ ──▶ │ 处理器 │ ──▶ │ 输出设备 │ │ (键盘/鼠标) │ │ (CPU) │ │ (屏幕/音响) │ └─────────────┘ └──────┬──────┘ └─────────────┘ │ ▼ ┌─────────────┐ │ 存储器 │ │ (内存/硬盘) │ └─────────────┘简单理解输入设备你告诉电脑做什么处理器电脑真正思考计算的地方存储器电脑记住东西的地方输出设备电脑告诉你结果1.1.2 程序是什么程序 一系列指令的集合告诉计算机一步一步做什么类比做菜的菜谱text菜谱程序 第1步洗菜 第2步切菜 第3步热锅 第4步倒油 第5步炒菜 第6步出锅 计算机程序 第1步读取用户输入 第2步进行数学计算 第3步判断条件如果...则... 第4步重复某操作 第5步输出结果1.1.3 为什么需要编程语言核心问题计算机只认识 0 和 1机器语言text机器语言人类无法理解 10110000 01100001 -- 这代表什么没人能直接读懂 汇编语言稍微好一点但仍很困难 MOV AL, 61h 高级语言C#人类自然理解 int age 25; Console.WriteLine(我今年25岁);层次关系textC# 代码你写 ↓ 编译 中间语言 IL ↓ 即时编译 (JIT) 机器码 010101 ↓ 执行 CPU 做相应操作1.2 C# 的历史与定位1.2.1 C# 的诞生故事时间2000 年创始人Anders Hejlsberg也是 Delphi 的创造者公司微软背景当时 Java 很流行但微软想要一个自己的、更好的语言1.2.2 名字的由来textC# 中的 # 读作 Sharp意思是锋利/锐利 灵感来自乐谱 C ♯升C调→ 比 C 高半音暗示 C# 比 C 更先进1.2.3 C# 能做什么应用场景应用类型典型项目示例需要学习的方向控制台应用后台服务、工具脚本基础语法、文件操作、网络桌面应用 (WinForms)简单的 Windows 小工具窗体、控件、事件桌面应用 (WPF)专业桌面软件XAML、数据绑定、MVVMWeb 后端 (ASP.NET Core)网站后台、APIWeb 开发、数据库游戏 (Unity)手机游戏、PC 游戏Unity 引擎、向量数学移动应用 (MAUI)iOS/Android 跨平台 AppXAML、移动开发特性云服务 (Azure)云函数、微服务云端 SDK、分布式初学者建议从控制台应用开始只关注语法本身。1.3 开发环境的超详细安装1.3.1 什么是 IDE集成开发环境IDE 编辑代码 编译运行 调试纠错三合一的工具text没有 IDE你在记事本写代码 → 去命令行编译 → 去另一个窗口运行 → 出错后不知道哪里错了 有 IDE你在一个窗口里完成所有事出错后直接告诉你哪一行有问题1.3.2 方案一Visual Studio 2022 社区版最推荐安装步骤带图文字描述下载安装程序访问https://visualstudio.microsoft.com/zh-hans/vs/community/点击免费下载按钮运行安装程序双击下载的vs_community.exe可能弹出用户账户控制窗口点击是选择工作负载重要你看到的界面会有很多选项至少勾选✅.NET 桌面开发约 6GB—— 必选✅通用 Windows 平台开发可选但如果硬盘空间够就勾上什么是工作负载就是预先打包好的组件集合勾选后自动安装你需要的所有东西。选择安装位置可选默认在 C 盘如果 C 盘空间紧张可以改到 D 盘点击安装等待时间取决于网速可能需要 20-60 分钟首次启动配置选择开发设置选Visual C#选择主题颜色随便深色对眼睛好登录可以跳过免费不需要登录1.3.3 方案二.NET SDK VS Code轻量级适合电脑配置较低、喜欢简洁、或者用 Mac/Linux步骤安装 .NET SDK访问https://dotnet.microsoft.com/download点击 .NET 8.0 或更高版本的 Download x64安装一路 Next验证安装按Win R输入cmd回车输入dotnet --version看到类似8.0.xxx的输出表示成功安装 VS Code访问https://code.visualstudio.com/下载安装安装 C# 扩展打开 VS Code点击左侧扩展图标或按CtrlShiftX搜索 C#安装微软官方的 C# for Visual Studio Code作者 Microsoft1.3.4 方案三在线环境零安装适合临时尝试、学校机房限制Replithttps://replit.com/→ 创建 Repl → 选择 C#dotnet fiddlehttps://dotnetfiddle.net/→ 直接写代码运行SharpLabhttps://sharplab.io/→ 看代码编译后的结果缺点功能受限无法做文件/网络等操作仅适合学习基础语法。1.4 第一个 C# 程序逐字逐句拆解1.4.1 创建项目Visual Studio 方式打开 VS 2022点击 创建新项目选择模板搜索 控制台应用 → 选择控制台应用 (.NET)注意不是 .NET Framework配置项目项目名称MyFirstProgram位置选择你存放代码的文件夹如 D:\CSharpProjects解决方案名称默认和项目名一样框架选择.NET 8.0或更高点击创建VS 会自动生成如下代码csharp// See https://aka.ms/new-console-template for more information Console.WriteLine(Hello, World!);1.4.2 一行一行拆解很多人觉得 Hello World 太简单但里面包含了 C# 的核心概念。我们一个字都不放过第1行// See https://aka.ms/new-console-template for more informationtext// → 注释符号。从 // 开始到行尾的内容编译器完全忽略只给人看注释的分类csharp// 这是单行注释只能写这一行 /* 这是多行注释 可以写很多行 直到遇到 */第2行Console.WriteLine(Hello, World!);我们拆成 7 个部分部分代码解释1Console一个类代表控制台窗口系统内置的2.点运算符表示的Console 的 WriteLine3WriteLine一个方法表示写一行4(方法调用的开始括号5Hello, World!一个字符串双引号包裹的文字6)方法调用的结束括号7;语句结束符C# 每条语句必须以分号结尾完整理解使用 Console 类中的 WriteLine 方法把 Hello, World! 这一行文字输出到控制台为什么需要using System;有些模板没有这行在新版本的 .NET 中使用了隐式 using功能但理解这点很重要csharpusing System; // 告诉编译器我要使用 System 命名空间里的东西 // Console 类实际上全名是 System.Console // 写了 using System; 后就可以简写为 Console // 如果不写必须写成 System.Console.WriteLine(...)命名空间是什么类比学校里的学生text命名空间 班级 类 学生 System 班级里有 Console 这个同学 我们 using System; 相当于说我要用 System 班里的同学 之后叫 Console 就知道是谁了1.4.3 运行程序方式一VS 中直接运行点击工具栏的绿色三角形 ▶旁边写着 MyFirstProgram或者按F5调试运行或Ctrl F5不调试运行注意按Ctrl F5运行后控制台会自动暂停方便看到结果。按F5会一闪而过。方式二命令行运行打开项目文件夹D:\CSharpProjects\MyFirstProgram在地址栏输入cmd回车然后cmddotnet run1.4.4 让程序互动读入用户输入修改代码为csharpusing System; Console.WriteLine(你好请问你叫什么名字); string name Console.ReadLine(); Console.WriteLine(你好 name 欢迎学习 C#); Console.WriteLine(按任意键退出...); Console.ReadKey();新知识点解释代码含义string name声明一个字符串类型的变量名字叫 name赋值运算符把右边的值放到左边的变量里Console.ReadLine()读取用户输入的一行文字用户按回车结束字符串连接符把多个字符串拼在一起Console.ReadKey()等待用户按任意键防止程序立即退出运行效果text你好请问你叫什么名字 张三 ← 用户输入 你好张三欢迎学习 C# 按任意键退出...1.5 代码的执行流程画图理解关键理解代码是从上到下一行一行执行的执行完一行才执行下一行有的语句会阻塞比如 ReadLine 会等用户输入1.6 初学者最常见的错误含真实错误信息错误1拼写错误csharpConsole.WritLine(Hello); // WriteLine 少写了 e错误信息textConsole does not contain a definition for WritLine Console 不包含 WritLine 的定义错误2大小写错误csharpconsole.WriteLine(Hello); // console 应该是 Console Console.writeline(Hello); // writeline 应该是 WriteLineC# 大小写规则除了字符串内容其他地方全部严格区分大小写。错误3忘记分号csharpConsole.WriteLine(Hello) // 红色波浪线会出现在这里下文会显示text; expected 期望分号错误4括号不匹配csharpConsole.WriteLine(Hello; // 应该是 ) 而不是 ; 在里面错误5引号不匹配csharpConsole.WriteLine(Hello); // 缺少右双引号错误6中文标点非常常见csharpConsole.WriteLineHello // 括号和分号是中文的规则C# 中所有标点符号都必须是英文半角(){}[];.错误7多写或少写大括号csharp{ Console.WriteLine(Hello); // 缺少结束的 }1.7 深入理解编译 vs 解释有些语言是解释执行如 Python、JavaScript有些是编译执行如 C、C。C# 是混合方式。1.7.1 纯编译语言C 模型text源代码 (.cpp) → 编译 → 机器码 (.exe) → 直接运行特点一次性转换之后运行快但不同系统需要分别编译。1.7.2 纯解释语言Python 模型text源代码 (.py) → 解释器逐行翻译并执行特点每次运行都要翻译跨平台好但运行慢一点。1.7.3 C# 的两步编译模型text第1步 C# 代码 (.cs) → 编译器 (csc) → 中间语言 IL (.dll 或 .exe) 第2步运行时 中间语言 IL → JIT 编译器 → 机器码 → 执行JIT Just-In-Time即时编译运行时才把 IL 转成机器码。优势跨平台IL 可以在任何有 .NET 运行时的系统上运行性能好JIT 可以为当前 CPU 做优化1.8 本章完整术语表术语英文通俗解释程序Program一系列指令的集合编译Compile把代码翻译成机器能懂的形式源代码Source Code你写的 .cs 文件内容类Class数据和方法的容器C# 程序的基础单元方法Method执行特定功能的代码块相当于动词变量Variable存储数据的容器字符串String文本数据用双引号包裹命名空间Namespace组织代码的文件夹控制台Console文本输入输出的窗口1.9 练习题务必亲手完成基础题巩固理解修改 Hello World输出以下内容注意换行text 我的第一个程序 编写程序先输出 请输入第一个数字读入输入再输出 请输入第二个数字读入输入最后输出 您输入的是 X 和 Y替换 X Y 为实际输入。故意制造 3 种不同的编译错误记录错误信息然后修正。思考题下面的代码哪里错了csharpconsole.writeline(Hello World)如果我把代码写成csharpConsole.WriteLine(第一行) Console.WriteLine(第二行);会报什么错为什么挑战题不使用Console.WriteLine只用Console.Write和换行符\n实现输出两行文字。提示\n是换行符放在字符串里表示从这里换行1.10 常见问题 FAQQ: 为什么我运行程序后控制台一闪就没了A: 在代码末尾加Console.ReadKey();或者按CtrlF5运行。Q: .NET 6/7/8 选哪个版本A: 选最新的 .NET 8LTS 长期支持可以稳定使用到 2026 年。Q: 我的 VS 是英文版看不懂怎么办A: 可以安装中文语言包Tools → Options → Environment → International Settings → 选择 ChineseQ: 代码里的颜色有什么意义A: IDE 的语法高亮帮助识别代码类型蓝色关键字using, class, static, void青色类型Console, string棕色字符串hello绿色注释Q: 我该用 .NET Framework 还是 .NET Core/5A: 新项目一律用 .NET 6.NET Framework 只用于维护老项目。