C# 教程:基础知识与实践
C# (读作“C sharp”) 是由微软开发的一种现代、通用、面向对象的编程语言。它在 .NET 框架上运行,被广泛应用于开发各种应用程序,包括桌面应用(Windows Forms, WPF)、Web 应用(ASP.NET Core)、移动应用(Xamarin/MAUI)、游戏开发(Unity)、云服务(Azure)以及物联网(IoT)等。本文将带你了解 C# 的基础知识,并探讨其在实践中的应用。
一、 C# 简介与特点
C# 结合了 C++ 的强大功能和 Java 的简易性与高效性,具有以下主要特点:
- 面向对象 (Object-Oriented):支持封装、继承、多态和抽象等 OOP 核心概念,有助于构建模块化、可维护的代码。
- 类型安全 (Type-Safe):在编译时和运行时执行严格的类型检查,减少运行时错误。
- 内存管理 (Memory Management):通过垃圾回收机制自动管理内存,开发者无需手动分配和释放内存。
- 跨平台 (Cross-Platform):借助 .NET Core / .NET 5+,C# 应用程序可以在 Windows、Linux 和 macOS 等多个操作系统上运行。
- 强大的生态系统:拥有庞大的 .NET 框架和丰富的类库,可以快速高效地开发各类应用。
- 语法简洁:吸收了多种语言的优点,语法清晰,易于学习。
二、 C# 基础知识
1. 开发环境搭建
开始 C# 编程前,你需要一个开发环境。最常用的工具是:
- Visual Studio (推荐用于 Windows):功能全面的集成开发环境 (IDE),提供强大的代码编辑、调试和项目管理功能。
- Visual Studio Code (推荐用于跨平台):轻量级但功能强大的代码编辑器,配合 C# 扩展可用于 .NET 开发。
- .NET SDK:包含编译、运行和发布 .NET 应用程序所需的工具和运行时。
2. “Hello, World!” 程序
让我们从经典的 “Hello, World!” 程序开始:
“`csharp
using System; // 引入 System 命名空间,其中包含 Console 类
namespace MyFirstProgram // 声明一个命名空间,用于组织代码
{
class Program // 声明一个类
{
static void Main(string[] args) // 主方法,程序的入口点
{
Console.WriteLine(“Hello, World!”); // 向控制台输出文本
Console.ReadKey(); // 等待用户按键,防止控制台立即关闭
}
}
}
“`
using System;: 导入System命名空间,其中包含了如Console类等基础功能。namespace: 命名空间用于组织相关的代码,避免命名冲突。class: C# 是面向对象的,所有代码都必须在类中。Main方法:这是程序的入口点,当程序启动时,首先执行此方法。Console.WriteLine(): 用于向控制台输出文本。Console.ReadKey(): 在控制台应用程序中,这行代码通常用于在程序执行完毕后,让控制台窗口保持打开,直到用户按下任意键。
3. 变量与数据类型
变量是存储数据的容器。C# 是一种强类型语言,这意味着每个变量都必须有一个明确的类型。
常用值类型:
int: 整数 (如 10, -5)double: 双精度浮点数 (如 3.14, 0.001)float: 单精度浮点数 (需要在数字后加f,如 3.14f)bool: 布尔值 (true 或 false)char: 单个字符 (如 ‘A’, ‘7’)decimal: 高精度十进制数 (用于金融计算,需要在数字后加m,如 12.99m)
常用引用类型:
string: 字符串 (如 “Hello”, “C#”)object: 所有类型的基类- 数组、类、接口等
变量声明与初始化:
“`csharp
int age = 30;
string name = “Alice”;
double price = 19.99;
bool isActive = true;
char initial = ‘J’;
// 也可以先声明后初始化
int count;
count = 100;
“`
4. 运算符
C# 支持多种运算符:
- 算术运算符:
+,-,*,/,%(取模) - 关系运算符:
==(等于),!=(不等于),>,<,>=,<= - 逻辑运算符:
&&(逻辑与),||(逻辑或),!(逻辑非) - 赋值运算符:
=,+=,-=,*=等 - 递增/递减运算符:
++,--
csharp
int a = 10, b = 5;
int sum = a + b; // 15
bool isEqual = (a == b); // false
bool complexCondition = (a > 0 && b < 10); // true
a++; // a becomes 11
5. 控制流语句
-
条件语句 (if-else, switch):根据条件执行不同的代码块。
“`csharp
// if-else
if (age >= 18)
{
Console.WriteLine(“成年人”);
}
else if (age >= 0)
{
Console.WriteLine(“未成年人”);
}
else
{
Console.WriteLine(“无效年龄”);
}// switch
string dayOfWeek = “Monday”;
switch (dayOfWeek)
{
case “Monday”:
Console.WriteLine(“周一”);
break;
case “Friday”:
Console.WriteLine(“周五”);
break;
default:
Console.WriteLine(“其他日子”);
break;
}
“` -
循环语句 (for, while, do-while, foreach):重复执行代码块。
“`csharp
// for 循环
for (int i = 0; i < 5; i++)
{
Console.WriteLine($”For 循环迭代: {i}”);
}// while 循环
int j = 0;
while (j < 3)
{
Console.WriteLine($”While 循环迭代: {j}”);
j++;
}// foreach 循环 (常用于遍历集合)
string[] fruits = { “Apple”, “Banana”, “Cherry” };
foreach (string fruit in fruits)
{
Console.WriteLine($”我喜欢 {fruit}”);
}
“`
6. 方法 (Methods/Functions)
方法是包含一系列语句的代码块,用于执行特定任务。
“`csharp
class Calculator
{
// 无参数,无返回值
public void Greet()
{
Console.WriteLine(“欢迎使用计算器!”);
}
// 有参数,有返回值
public int Add(int num1, int num2)
{
return num1 + num2;
}
// 静态方法(无需创建对象即可调用)
public static double Multiply(double x, double y)
{
return x * y;
}
}
// 在 Main 方法中调用
// Calculator myCalc = new Calculator();
// myCalc.Greet();
// int result = myCalc.Add(5, 3); // result = 8
// double product = Calculator.Multiply(2.5, 4.0); // product = 10.0
“`
7. 类与对象 (面向对象编程入门)
C# 的核心是面向对象编程。类是对象的蓝图,对象是类的实例。
“`csharp
// 定义一个 Person 类
class Person
{
// 属性 (数据成员)
public string Name { get; set; } // 自动实现的属性
public int Age { get; set; }
// 构造函数 (用于创建对象时初始化属性)
public Person(string name, int age)
{
Name = name;
Age = age;
}
// 方法 (行为)
public void Introduce()
{
Console.WriteLine($"你好,我叫 {Name},我今年 {Age} 岁。");
}
}
// 在 Main 方法中创建并使用对象
// Person person1 = new Person(“张三”, 25); // 创建 Person 对象
// person1.Introduce(); // 调用对象的方法
// Person person2 = new Person(“李四”, 30);
// person2.Age = 31; // 修改对象属性
// Console.WriteLine($”{person2.Name} 现在 {person2.Age} 岁了。”);
“`
三、 C# 实践应用与进阶概念
1. 数组与集合
数组是固定大小的同类型元素序列。集合则提供更灵活的数据存储和操作方式。
“`csharp
// 数组
int[] numbers = new int[5]; // 声明一个包含 5 个整数的数组
numbers[0] = 10;
numbers[1] = 20;
string[] names = { “Anna”, “Bob”, “Charlie” };
// 列表 (List
List
scoreList.Add(90);
scoreList.Add(85);
scoreList.Remove(90); // 移除元素
Console.WriteLine($”列表中有 {scoreList.Count} 个分数。”);
“`
2. 异常处理 (Try-Catch)
用于处理程序运行时可能发生的错误,防止程序崩溃。
csharp
try
{
int num1 = 10;
int num2 = 0;
int result = num1 / num2; // 这里会发生除以零的错误
Console.WriteLine($"结果: {result}");
}
catch (DivideByZeroException ex)
{
Console.WriteLine($"错误:不能除以零。{ex.Message}");
}
catch (Exception ex) // 捕获所有其他类型的异常
{
Console.WriteLine($"发生了未知错误: {ex.Message}");
}
finally
{
Console.WriteLine("异常处理块执行完毕。");
}
3. 继承与多态
- 继承:允许一个类(子类/派生类)从另一个类(父类/基类)获取属性和方法,实现代码重用。
- 多态:允许不同类的对象对同一个消息作出不同的响应(通过方法重写或接口实现)。
“`csharp
class Animal // 基类
{
public string Name { get; set; }
public Animal(string name) { Name = name; }
public virtual void MakeSound() // 虚方法,可以被子类重写
{
Console.WriteLine($”{Name} 发出声音。”);
}
}
class Dog : Animal // Dog 类继承自 Animal 类
{
public Dog(string name) : base(name) { }
public override void MakeSound() // 重写 MakeSound 方法
{
Console.WriteLine($”{Name} 汪汪叫!”);
}
}
class Cat : Animal
{
public Cat(string name) : base(name) { }
public override void MakeSound()
{
Console.WriteLine($”{Name} 喵喵叫!”);
}
}
// Animal myDog = new Dog(“旺财”);
// myDog.MakeSound(); // 输出 “旺财 汪汪叫!”
// Animal myCat = new Cat(“咪咪”);
// myCat.MakeSound(); // 输出 “咪咪 喵喵叫!”
“`
4. 接口 (Interfaces)
接口定义了一组必须由实现它的类实现的方法、属性、事件或索引器。它只声明“做什么”,而不声明“如何做”。
“`csharp
interface IShape
{
double GetArea();
void DisplayShape();
}
class Circle : IShape
{
public double Radius { get; set; }
public Circle(double radius) { Radius = radius; }
public double GetArea() { return Math.PI * Radius * Radius; }
public void DisplayShape() { Console.WriteLine($”这是一个半径为 {Radius} 的圆形。”); }
}
// IShape circle = new Circle(5);
// circle.DisplayShape();
// Console.WriteLine($”圆形的面积是: {circle.GetArea()}”);
“`
四、 C# 在实际项目中的应用
C# 及其 .NET 平台能够胜任多种类型的项目:
- 桌面应用程序:使用 Windows Forms 或 WPF (Windows Presentation Foundation) 构建美观且功能强大的 Windows 桌面应用。
- Web 应用程序:使用 ASP.NET Core 开发高性能、跨平台的 Web API 和 Web 应用。
- 游戏开发:作为 Unity 游戏引擎的主要脚本语言,C# 是制作 2D 和 3D 游戏的首选。
- 移动应用程序:通过 Xamarin 或 .NET MAUI,开发者可以使用 C# 编写代码,同时部署到 iOS、Android、Windows 和 macOS 平台。
- 云服务:利用 Azure Functions, Azure App Service 等服务,使用 C# 开发无服务器函数、微服务等云原生应用。
- 数据科学与机器学习:ML.NET 框架允许开发者在 C# 中集成机器学习模型。
五、 结语
C# 是一门功能强大、用途广泛且不断发展的编程语言。从基础语法到面向对象概念,再到其丰富的生态系统,C# 为开发者提供了构建各种复杂应用程序的坚实基础。通过不断学习和实践,你将能够掌握这门语言,并利用它在软件开发的广阔领域中创造价值。
现在就开始你的 C# 编程之旅吧!