C#它支持多种编程范式,包括面向对象编程(OOP)、泛型编程、事件驱动编程、多线程和异步编程等。下面我将为每种范式提供最简单的代码示例,并简要解释其原理。
- 面向对象编程(OOP)
面向对象编程是C#的核心特性之一,它通过将数据(属性)和操作数据的函数(方法)封装在对象中来实现。
示例代码:
csharp
using System;
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public void Introduce()
{
Console.WriteLine($"Hello, my name is {Name} and I am {Age} years old.");
}
}
class Program
{
static void Main(string[] args)
{
Person person = new Person
{
Name = "Alice",
Age = 30
};
person.Introduce();
}
}
- 泛型编程
泛型编程允许在类或方法中延迟指定一个或多个类型参数的具体类型,直到类被实例化或方法被调用时。
示例代码:
csharp
using System;
public class Box<T>
{
public T Value { get; set; }
public Box(T value)
{
Value = value;
}
}
class Program
{
static void Main(string[] args)
{
Box<int> intBox = new Box<int>(10);
Console.WriteLine(intBox.Value);
Box<string> stringBox = new Box<string>("Hello");
Console.WriteLine(stringBox.Value);
}
}
- 事件驱动编程
事件驱动编程是一种编程范式,其中程序的执行流程由用户操作、外部事件或程序内部状态的变化所驱动。
示例代码(简单的事件委托示例):
csharp
using System;
public delegate void MessageEventHandler(string message);
public class Messenger
{
public event MessageEventHandler MessageReceived;
protected virtual void OnMessageReceived(string message)
{
MessageReceived?.Invoke(message);
}
public void Send(string message)
{
OnMessageReceived(message);
}
}
class Program
{
static void Main(string[] args)
{
Messenger messenger = new Messenger();
messenger.MessageReceived += (message) => Console.WriteLine($"Received: {message}");
messenger.Send("Hello, World!");
}
}
- 多线程和异步编程
多线程允许程序同时执行多个任务,而异步编程允许程序在等待长时间运行的操作(如I/O操作)完成时释放主线程。
多线程示例(使用Thread类):
csharp
using System;
using System.Threading;
class Program
{
static void Main(string[] args)
{
Thread thread = new Thread(new ThreadStart(DoWork));
thread.Start();
// 主线程继续执行其他任务
Console.WriteLine("Main thread continues to execute.");
thread.Join(); // 等待子线程完成
}
static void DoWork()
{
Console.WriteLine("DoWork is running on a separate thread.");
}
}
异步编程示例(使用async和await):
csharp
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
await DoWorkAsync();
Console.WriteLine("Main method continues after DoWorkAsync completes.");
}
static async Task DoWorkAsync()
{
await Task.Delay(1000); // 模拟耗时操作
Console.WriteLine("DoWorkAsync completed.");
}
}