第3章 - 第一个程序
嗨,朋友!我是长安。
上一章我们搭建好了开发环境,这一章我们要深入理解你的第一个 C# 程序。别小看这个简单的 "Hello World",它包含了很多重要的概念!
🤔 回顾第一个程序
还记得我们在上一章创建的程序吗?打开 Visual Studio,创建一个新的控制台应用项目,你会看到这样的代码:
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
是不是觉得很简单?这就是 C# 10 引入的"顶级语句"特性。对于初学者来说,这个简化版本很好理解,但我建议你先学习传统的完整结构,这样才能真正理解 C# 程序的组成。
🌟 传统的 C# 程序结构
让我们看看传统(也是更完整)的写法:
using System;
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
}
看起来复杂了很多对吧?别担心,我来一行一行给你解释。
📖 代码详解
1. using System; ⚡
using System;
作用:引入命名空间
类比:就像你要用手机之前,需要先从包里拿出来一样。System 是 .NET 提供的一个基础命名空间,包含了很多常用的功能,比如 Console(控制台)。
详细说明:
using是关键字,表示"使用"System是命名空间的名字- 如果不写这一行,就得这样写:
System.Console.WriteLine("Hello, World!");
2. namespace HelloWorld 📦
namespace HelloWorld
{
// 代码内容
}
作用:定义命名空间
类比:就像你的地址"中国-北京-朝阳区"一样,命名空间用来组织和管理代码,避免重名。
详细说明:
namespace是关键字HelloWorld是命名空间的名字(通常和项目名一致)- 大括号
{}包含了这个命名空间下的所有代码
小知识
大型项目可能有成百上千个类,使用命名空间可以把相关的类组织在一起。比如:
System.IO- 文件操作相关的类System.Net- 网络操作相关的类
3. class Program 🏛️
class Program
{
// 代码内容
}
作用:定义一个类
类比:类就像一个"模板"或"图纸"。比如汽车的设计图纸就是一个"类",根据这个图纸造出来的实际汽车就是"对象"。
详细说明:
class是关键字,表示定义一个类Program是类的名字(可以自己起名,但要遵守命名规范)- C# 是面向对象的语言,所有代码都要写在类里面
命名规范
- 类名通常用 大驼峰命名法(PascalCase):每个单词首字母大写
- 例如:
Program、MyFirstProgram、StudentInfo
4. static void Main(string[] args) 🚀
static void Main(string[] args)
{
// 代码内容
}
作用:程序的入口方法
类比:就像一本书的目录,告诉你从哪里开始读。程序运行时,会自动找到并执行 Main 方法里的代码。
详细拆解:
- static:静态的,表示这个方法属于类本身,不需要创建对象就能调用
- void:返回类型,
void表示这个方法不返回任何值 - Main:方法名,必须是
Main(大小写敏感),这是程序的入口 - string[] args:参数,可以接收命令行参数(初学者可以先忽略)
重要
每个 C# 程序只能有一个 Main 方法,它是程序的起点。就像火箭发射的起点一样!
5. Console.WriteLine("Hello, World!"); 💬
Console.WriteLine("Hello, World!");
作用:在控制台输出文本
详细拆解:
- Console:控制台类,来自
System命名空间 - WriteLine:方法名,表示"写一行"
- "Hello, World!":字符串,要输出的内容
- ;:分号,表示一条语句的结束(非常重要,不要忘记!)
WriteLine vs Write
Console.WriteLine():输出后会换行Console.Write():输出后不换行
Console.WriteLine("第一行");
Console.WriteLine("第二行");
// 输出:
// 第一行
// 第二行
Console.Write("第一行");
Console.Write("第二行");
// 输出:
// 第一行第二行
🎨 完整示例:详细注释版
让我把所有知识点整合到一起,写一个带详细注释的完整程序:
// 1. 引入 System 命名空间,以便使用 Console 类
using System;
// 2. 定义一个名为 HelloWorld 的命名空间
namespace HelloWorld
{
// 3. 定义一个名为 Program 的类
class Program
{
// 4. 定义 Main 方法,这是程序的入口
// static: 静态方法
// void: 不返回值
// string[] args: 可以接收命令行参数
static void Main(string[] args)
{
// 5. 在控制台输出 "Hello, World!"
Console.WriteLine("Hello, World!");
// 6. 输出更多内容
Console.WriteLine("我是长安");
Console.WriteLine("欢迎来到 C# 的世界!");
// 7. 防止程序一闪而过(可选)
Console.WriteLine("按任意键退出...");
Console.ReadKey();
}
}
}
运行结果:
Hello, World!
我是长安
欢迎来到 C# 的世界!
按任意键退出...
🚀 顶级语句(C# 10+)
前面我们学习了传统的完整结构,现在来看看 C# 10 引入的简化写法:
Console.WriteLine("Hello, World!");
Console.WriteLine("我是长安");
Console.WriteLine("欢迎来到 C# 的世界!");
优点:
- 代码更简洁
- 对初学者更友好
- 适合写简单的脚本
缺点:
- 隐藏了很多细节
- 不适合大型项目
长安的建议
学习阶段,建议先使用传统的完整结构,等你理解了类、命名空间这些概念后,再使用顶级语句。这样基础更扎实!
💡 创建传统结构的项目
如果你想创建传统结构的项目,可以这样设置:
- 创建新项目时,取消勾选 "不使用顶级语句"
- 或者手动修改项目文件(.csproj),添加:
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>disable</ImplicitUsings>
</PropertyGroup>
🎯 常见错误和解决方法
错误1:缺少分号
Console.WriteLine("Hello") // ❌ 缺少分号
错误信息:; expected
解决方法:在语句末尾加上分号
Console.WriteLine("Hello"); // ✅ 正确
错误2:大小写错误
console.WriteLine("Hello"); // ❌ console 应该是 Console
错误信息:The name 'console' does not exist in the current context
解决方法:注意大小写
Console.WriteLine("Hello"); // ✅ 正确
错误3:引号不匹配
Console.WriteLine("Hello); // ❌ 缺少后引号
错误信息:Newline in constant
解决方法:确保引号成对出现
Console.WriteLine("Hello"); // ✅ 正确
错误4:括号不匹配
Console.WriteLine("Hello"; // ❌ 缺少右括号
错误信息:) expected
解决方法:确保括号成对出现
Console.WriteLine("Hello"); // ✅ 正确
避免错误的技巧
- 使用 Visual Studio 的智能提示功能
- 注意代码高亮颜色
- 养成写完一行就测试的习惯
- 仔细看错误信息,它会告诉你错在哪里
📊 程序的执行流程
让我用一个流程图来展示程序是如何执行的:
程序启动
↓
找到 Main 方法
↓
执行 Main 方法里的第一条语句
↓
执行第二条语句
↓
执行第三条语句
↓
... 继续执行 ...
↓
执行最后一条语句
↓
程序结束
🎨 实战练习:输出个人信息
让我们来写一个更实用的程序,输出你的个人信息:
using System;
namespace MyInfo
{
class Program
{
static void Main(string[] args)
{
// 输出个人信息
Console.WriteLine("========== 个人信息 ==========");
Console.WriteLine("姓名:张三");
Console.WriteLine("年龄:25");
Console.WriteLine("爱好:编程");
Console.WriteLine("=============================");
// 等待用户按键
Console.WriteLine("\n按任意键退出...");
Console.ReadKey();
}
}
}
运行结果:
========== 个人信息 ==========
姓名:张三
年龄:25
爱好:编程
=============================
按任意键退出...
📝 本章小结
这一章我们深入学习了:
- ✅ C# 程序的完整结构
- ✅
using、namespace、class、Main的作用 - ✅ 如何使用
Console.WriteLine()输出内容 - ✅ 顶级语句的简化写法
- ✅ 常见错误和解决方法
- ✅ 程序的执行流程
💡 重要概念
| 概念 | 说明 |
|---|---|
| 命名空间 | 组织和管理代码,避免重名 |
| 类 | 面向对象的基本单位,代码的容器 |
| Main 方法 | 程序的入口,从这里开始执行 |
| 语句 | 程序的基本执行单位,以分号结尾 |
🎯 下一步
理解了程序的基本结构后,下一章我们要学习如何存储和使用数据——变量和数据类型。这是编程的基础中的基础!
💪 练习题
- C# 程序的入口方法叫什么名字?
Console.WriteLine()和Console.Write()有什么区别?- 为什么每条语句后面要加分号?
- 试着修改上面的个人信息程序,输出你自己的信息
- 试着在程序中输出一个简单的图案(用字符画)
答案提示
- Main 方法
WriteLine()输出后换行,Write()输出后不换行- 分号表示一条语句的结束,告诉编译器这条语句到此为止
- 把姓名、年龄、爱好改成你自己的即可
- 示例:
Console.WriteLine(" * ");
Console.WriteLine(" *** ");
Console.WriteLine("*****");
