404 Not Found

404 Not Found


nginx

开发环境搭建

搭建开发环境就像准备画室——画布(.NET SDK)和画笔(VS Code)就位了,才能开始创作(写C#代码)。

安装.NET SDK

.NET SDK(Software Development Kit)是开发C#程序的核心工具包,包含编译器、运行时和项目管理工具。你需要先安装它,才能编写、编译和运行C#程序。

Windows安装

  1. 访问 https://dotnet.microsoft.com/download/dotnet/8.0 下载.NET 8 SDK安装包
  2. 运行安装程序,按默认选项完成安装
  3. 打开命令提示符验证:
BASH
dotnet --version
TEXT
8.0.xxx

如果看到版本号输出,说明安装成功。

macOS安装

通过Homebrew安装:

BASH
brew install dotnet-sdk

或者从官网下载macOS安装包,验证方式相同:

BASH
dotnet --version

Linux安装

Ubuntu/Debian:

BASH
sudo apt-get update
sudo apt-get install -y dotnet-sdk-8.0

CentOS/RHEL:

BASH
sudo dnf install -y dotnet-sdk-8.0

验证安装:

BASH
dotnet --version

💡 提示:本书使用.NET 8(LTS长期支持版)。安装时务必选择SDK而非仅运行时(Runtime),SDK包含开发所需的全部工具。

SDK包含的关键组件

组件 作用
Roslyn编译器 将C#代码编译为中间语言(IL)
dotnet CLI 命令行工具,创建/构建/运行项目
.NET运行时 执行编译后的程序
NuGet包管理器 管理第三方库依赖

配置VS Code

VS Code是微软开发的免费代码编辑器,配合C#插件后可提供强大的C#开发体验。

安装VS Code

前往 https://code.visualstudio.com 下载并安装。

安装必要插件

打开VS Code后,按 Ctrl+Shift+X 打开插件市场,搜索并安装:

插件名 作用
C# Dev Kit(Microsoft) 语法高亮、智能提示、调试、项目管理一站式支持
C#(Microsoft) 基础C#语言服务(安装Dev Kit时通常自动安装)

配置C# Dev Kit

安装C# Dev Kit后,插件会自动检测已安装的.NET SDK。你可以通过以下方式确认配置正确:

  1. Ctrl+Shift+P,输入 .NET: New Project,如果能弹出项目模板列表,说明配置成功
  2. 底部状态栏应显示.NET SDK版本号

⚠️ 注意:VS Code打开文件夹时,建议新建一个专门的文件夹(如 csharp-learn),用VS Code打开整个文件夹,而不是单个文件。这样C# Dev Kit才能正常工作。

第一个程序:Hello World

示例

使用dotnet CLI创建第一个控制台应用:

BASH
dotnet new console -n MyFirstApp
▶ 试一试
TEXT
The template "Console App" was created successfully.
Processing post-creation actions...
Restoring packages...
Determining projects to restore...
Restored MyFirstApp.csproj (in 1.2s).

进入项目目录并运行:

BASH
cd MyFirstApp
dotnet run
TEXT
Hello, World!

这就是你用C#写的第一个程序!dotnet new console 命令会自动生成项目结构和代码。

项目结构

创建完成后,项目文件夹内容如下:

TEXT
MyFirstApp/
├── MyFirstApp.csproj
├── Program.cs
└── obj/
    └── ...
文件 作用
Program.cs 程序入口,包含主代码
MyFirstApp.csproj 项目配置文件,定义SDK、目标框架等
obj/ 编译中间产物目录

dotnet CLI常用命令

dotnet CLI是.NET开发的核心命令行工具,掌握它比依赖IDE更高效。

项目管理命令

命令 作用 示例
dotnet new console 创建控制台项目 dotnet new console -n MyApp
dotnet new classlib 创建类库项目 dotnet new classlib -n MyLib
dotnet new list 列出所有可用模板 dotnet new list

-n 参数指定项目名称,省略则使用当前文件夹名。

构建、运行与发布

命令 作用 示例
dotnet build 编译项目(不运行) dotnet build
dotnet run 编译并运行项目 dotnet run
dotnet publish 发布项目(部署用) dotnet publish -c Release

示例

BASH
dotnet build
▶ 试一试
TEXT
MSBuild version 17.8.xxxx
  Determining projects to restore...
  Restored MyFirstApp.csproj (in 102 ms).
  MyFirstApp -> G:\csharp-learn\MyFirstApp\bin\Debug\net8.0\MyFirstApp.dll

Build succeeded.
    0 Warning(s)
    0 Error(s)

🔥 实用技巧dotnet run = dotnet build + 自动执行。开发时用 dotnet run 快速测试,正式构建用 dotnet build 检查编译问题。

顶级语句 vs 传统Program.Main

C# 9引入了顶级语句(Top-level Statements),让控制台程序的写法大幅简化。理解两种写法,有助于读懂不同时期的C#代码。

顶级语句(C# 9+,默认方式)

dotnet new console 生成的 Program.cs 默认使用顶级语句:

CSHARP
System.Console.WriteLine("Hello, World!");

就这样一行代码,无需命名空间、无需类、无需Main方法。编译器会自动将它包装在一个生成的 Main 方法中。

传统Program.Main写法

C# 9之前的写法,所有代码必须放在 Main 方法里:

CSHARP
using System;

namespace MyFirstApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
        }
    }
}

两种写法对比

特性 顶级语句 传统Program.Main
代码量 极少 较多样板代码
入口方法 编译器自动生成 手动定义 static void Main
using声明 可省略(用完全限定名) 通常需要 using System;
命名空间 无需声明 需要声明
命令行参数 通过 args 变量直接访问 通过 Main(string[] args) 参数
适用场景 简单程序、学习、脚本 大型项目、需要精细控制入口
C#版本 C# 9+ 所有版本

📌 要点:顶级语句和传统写法功能完全等价。顶级语句只是语法糖,编译后生成的IL代码本质相同。同一个项目中只能有一个文件使用顶级语句。

使用顶级语句访问命令行参数

CSHARP
if (args.Length > 0)
{
    System.Console.WriteLine($"Hello, {args[0]}!");
}
else
{
    System.Console.WriteLine("Hello, World!");
}
BASH
dotnet run -- Alice
TEXT
Hello, Alice!

-- 之后的参数会传递给程序。顶级语句中 args 由编译器自动注入。

常见编译错误

初学者一定会遇到编译错误,不要慌,学会读懂错误信息比避免错误更重要。

CS1002:应输入分号

CSHARP
System.Console.WriteLine("Hello, World!")
TEXT
Program.cs(1,40): error CS1002: ; expected

错误信息格式为 文件名(行号,列号): 错误编号: 描述。这行代码末尾少了分号,C#每条语句必须以分号结尾。

CS0103:当前上下文中不存在该名称

CSHARP
Console.WriteLine("Hello, World!");
TEXT
Program.cs(1,1): error CS0103: The name 'Console' does not exist in the current context

使用了 Console 但没有 using System;,也没有写完全限定名 System.Console。两种解决方式:添加 using System; 或使用 System.Console

CS0117:不包含该成员的定义

CSHARP
System.Console.WritLine("Hello, World!");
TEXT
Program.cs(1,17): error CS0117: 'Console' does not contain a definition for 'WritLine'

WriteLine 拼写成了 WritLine。编译器告诉你 Console 类中没有 WritLine 这个成员,检查拼写即可。

CS0120:非静态字段需要对象引用

CSHARP
namespace MyApp
{
    class Program
    {
        string name = "C#";
        static void Main(string[] args)
        {
            System.Console.WriteLine(name);
        }
    }
}
TEXT
Program.cs(8,37): error CS0120: An object reference is required for the non-static field, method, or property 'Program.name'

在静态方法 Main 中访问了非静态字段 name。静态方法属于类本身,而非静态成员属于类的实例,需要先创建对象。

⚠️ 读错误信息的技巧:错误行号可能指向"出错后的下一位置"。如果某行报错,先检查该行和上一行的拼写、分号和括号。CS编号是微软官方错误代码,可直接搜索"CS编号"找到详细说明。

❓ 常见问题

Q 安装.NET SDK后命令行提示"dotnet不是内部命令"怎么办?
A 说明.NET的安装目录没有加入系统PATH环境变量。Windows上重新运行SDK安装程序通常会自动修复。若未修复,手动将dotnet所在目录(如C:\Program Files\dotnet)添加到系统PATH,然后重启命令行。
Q C# Dev Kit和旧版C#插件有什么区别?
A C# Dev Kit是微软2023年推出的新插件,集成了项目管理、解决方案浏览器、测试资源管理器等功能,体验更接近Visual Studio。旧版C#插件仅提供基础语言服务。推荐使用C# Dev Kit。
Q 顶级语句和传统写法性能有区别吗?
A 完全没有。顶级语句只是语法糖,编译器会将其转换为标准的Main方法。生成的IL代码和运行时性能完全一致。选择哪种写法取决于代码可读性和项目规模。
Q dotnet run和dotnet build有什么区别?
A dotnet build只编译项目生成DLL文件,不执行。dotnet run会先编译(如果需要)然后自动运行程序。开发调试用dotnet run更方便,CI/CD构建用dotnet build更可控。

📖 小节

📝 作业

  1. 在你的电脑上安装.NET 8 SDK并验证 dotnet --version 输出正常,将版本号记录下来
  2. 使用 dotnet new console -n Homework02 创建项目,修改Program.cs输出你的名字和一句问候语(如"你好,我是小明,开始学习C#!"),运行并截图
  3. 将顶级语句版本改写为传统Program.Main写法,确认两种写法运行结果相同
  4. 故意制造3种编译错误(缺少分号、拼写错误、省略using),记录编译器给出的CS编号和错误描述,练习读懂错误提示
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏