C# 教程:基础知识与实践 – wiki词典


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 = new 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# 编程之旅吧!


滚动至顶部