.Net的潘多拉魔盒开箱即用,你学废了吗?
1. 控制台输入输出(基本IO操作)
using System;class Program
{static void Main(){Console.WriteLine("请输入你的名字:");string name = Console.ReadLine();Console.WriteLine($"你好, {name}!");}
}
用途: 展示如何使用控制台进行用户输入输出操作。
2. 文件读写操作
using System;
using System.IO;class Program
{static void Main(){string path = @"test.txt";// 写入文件File.WriteAllText(path, "Hello World!");// 读取文件string content = File.ReadAllText(path);Console.WriteLine(content);}
}
用途: 实现文本文件的读写操作。
3. 异步编程示例(Async/Await)
using System;
using System.Threading.Tasks;class Program
{static async Task Main(){Console.WriteLine("任务开始");await Task.Delay(2000); // 模拟异步操作Console.WriteLine("任务结束");}
}
用途: 展示如何使用异步编程处理耗时任务。
4. JSON序列化与反序列化(使用Newtonsoft.Json库)
using Newtonsoft.Json;
using System;class Person
{public string Name { get; set; }public int Age { get; set; }
}class Program
{static void Main(){Person person = new Person { Name = "John", Age = 30 };// 序列化string json = JsonConvert.SerializeObject(person);Console.WriteLine("序列化后的JSON: " + json);// 反序列化Person deserializedPerson = JsonConvert.DeserializeObject<Person>(json);Console.WriteLine($"反序列化后的对象: {deserializedPerson.Name}, {deserializedPerson.Age}");}
}
用途: 实现对象的JSON序列化和反序列化。
5. 多线程示例(使用Thread类)
using System;
using System.Threading;class Program
{static void PrintNumbers(){for (int i = 1; i <= 5; i++){Console.WriteLine(i);Thread.Sleep(500); // 模拟耗时操作}}static void Main(){Thread t = new Thread(PrintNumbers);t.Start();t.Join();Console.WriteLine("主线程完成");}
}
用途: 展示如何使用Thread类进行多线程编程。
6. 集合操作(List 和 Dictionary 示例)
using System;
using System.Collections.Generic;class Program
{static void Main(){List<string> fruits = new List<string> { "Apple", "Banana", "Orange" };fruits.Add("Grapes");foreach (var fruit in fruits){Console.WriteLine(fruit);}Dictionary<string, int> fruitPrices = new Dictionary<string, int>{{ "Apple", 5 },{ "Banana", 2 }};fruitPrices["Orange"] = 3;foreach (var item in fruitPrices){Console.WriteLine($"{item.Key}: ${item.Value}");}}
}
用途: 展示如何使用集合(List 和 Dictionary)进行操作。
7. 事件和委托(Delegates and Events)
using System;class Program
{public delegate void Notify();public static event Notify OnProcessCompleted;static void Main(){OnProcessCompleted += ProcessCompletedHandler;Console.WriteLine("任务进行中...");OnProcessCompleted?.Invoke();}static void ProcessCompletedHandler(){Console.WriteLine("任务已完成!");}
}
用途: 展示如何使用委托和事件处理异步通知。
8. Linq 查询
using System;
using System.Linq;class Program
{static void Main(){int[] numbers = { 1, 2, 3, 4, 5, 6 };var evenNumbers = numbers.Where(n => n % 2 == 0);Console.WriteLine("偶数:");foreach (var num in evenNumbers){Console.WriteLine(num);}}
}
用途: 使用Linq进行数组或集合的查询和过滤。
9. 属性(Properties)示例
using System;class Person
{private int age;public int Age{get { return age; }set{if (value >= 0)age = value;elseConsole.WriteLine("年龄不能为负数");}}
}class Program
{static void Main(){Person person = new Person();person.Age = 30;Console.WriteLine($"年龄: {person.Age}");person.Age = -5; // 错误设置}
}
用途: 演示如何使用属性封装数据。
10. 接口(Interface)实现
using System;interface IDrawable
{void Draw();
}class Circle : IDrawable
{public void Draw(){Console.WriteLine("画一个圆形");}
}class Program
{static void Main(){IDrawable drawable = new Circle();drawable.Draw();}
}
用途: 展示如何实现接口并定义多态行为。
11. 数据库操作(使用 ADO.NET 连接SQL Server)
using System;
using System.Data.SqlClient;class Program
{static void Main(){string connectionString = "Data Source=server;Initial Catalog=database;User ID=user;Password=password";using (SqlConnection connection = new SqlConnection(connectionString)){connection.Open();string query = "SELECT COUNT(*) FROM Users";SqlCommand command = new SqlCommand(query, connection);int userCount = (int)command.ExecuteScalar();Console.WriteLine($"用户总数: {userCount}");}}
}
用途: 展示如何通过 ADO.NET 操作数据库。
12. 依赖注入(使用Microsoft.Extensions.DependencyInjection)
using System;
using Microsoft.Extensions.DependencyInjection;interface IMessageService
{void SendMessage(string message);
}class EmailService : IMessageService
{public void SendMessage(string message){Console.WriteLine("发送邮件: " + message);}
}class Program
{static void Main(){var serviceProvider = new ServiceCollection().AddSingleton<IMessageService, EmailService>().BuildServiceProvider();var messageService = serviceProvider.GetService<IMessageService>();messageService.SendMessage("Hello, Dependency Injection!");}
}
用途: 展示如何在C#中使用依赖注入。
13. WPF 简单窗口应用
<Window x:Class="WpfApp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="MainWindow" Height="200" Width="400"><Grid><Button Content="Click Me" HorizontalAlignment="Center" VerticalAlignment="Center" Click="Button_Click"/></Grid>
</Window>
using System.Windows;namespace WpfApp
{public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}private void Button_Click(object sender, RoutedEventArgs e){MessageBox.Show("按钮点击了!");}}
}
用途: 演示如何使用WPF创建简单的GUI程序。
14. 异常处理示例
using System;class Program
{static void Main(){try{int number = int.Parse("abc");}catch (FormatException ex){Console.WriteLine("格式错误: " + ex.Message);}finally{Console.WriteLine("处理完成");}}
}
用途: 演示如何捕获和处理异常。
15. 动态对象与 ExpandoObject
使用
using System;
using System.Dynamic;class Program
{static void Main(){dynamic person = new ExpandoObject();person.Name = "John";person.Age = 30;person.SayHello = new Action(() => Console.WriteLine($"Hello, my name is {person.Name}"));person.SayHello();}
}
用途: 展示如何使用 ExpandoObject
实现动态对象。
16. XML 文件读写
using System;
using System.Xml.Linq;class Program
{static void Main(){string filePath = "person.xml";// 创建XMLXElement person = new XElement("Person",new XElement("Name", "John"),new XElement("Age", 30));person.Save(filePath);// 读取XMLXElement loadedPerson = XElement.Load(filePath);Console.WriteLine($"Name: {loadedPerson.Element("Name").Value}");Console.WriteLine($"Age: {loadedPerson.Element("Age").Value}");}
}
用途: 实现XML文件的创建与读取,常用于配置文件操作。
17. 正则表达式匹配
using System;
using System.Text.RegularExpressions;class Program
{static void Main(){string input = "My phone number is 123-456-7890.";string pattern = @"\d{3}-\d{3}-\d{4}";Match match = Regex.Match(input, pattern);if (match.Success){Console.WriteLine($"找到电话号码: {match.Value}");}}
}
用途: 使用正则表达式查找特定模式的字符串。
18. 垃圾回收与 IDisposable
接口
using System;class Resource : IDisposable
{public void Dispose(){Console.WriteLine("释放资源");}
}class Program
{static void Main(){using (Resource res = new Resource()){Console.WriteLine("使用资源");}// 资源自动释放}
}
用途: 展示如何使用 IDisposable
接口进行资源管理与垃圾回收。
19. 委托链与多播委托
using System;class Program
{public delegate void Notify();static void Main(){Notify notify = SayHello;notify += SayGoodbye;notify();}static void SayHello(){Console.WriteLine("Hello!");}static void SayGoodbye(){Console.WriteLine("Goodbye!");}
}
用途: 展示如何使用委托链(多播委托)来调用多个方法。
20. 反射(Reflection)
using System;
using System.Reflection;class Program
{static void Main(){Type type = typeof(Person);Console.WriteLine("类名: " + type.Name);foreach (var prop in type.GetProperties()){Console.WriteLine("属性: " + prop.Name);}}
}class Person
{public string Name { get; set; }public int Age { get; set; }
}
用途: 通过反射获取类型信息,动态地分析和操作对象。
21. 委托泛型(使用Func 和 Action)
using System;class Program
{static void Main(){Func<int, int, int> add = (a, b) => a + b;int result = add(3, 4);Console.WriteLine($"3 + 4 = {result}");Action<string> printMessage = message => Console.WriteLine(message);printMessage("Hello from Action!");}
}
用途: 展示如何使用泛型委托 Func
和 Action
实现灵活的回调机制。
22. Task并行库(TPL)并发编程
using System;
using System.Threading.Tasks;class Program
{static async Task Main(){Task task1 = Task.Run(() => DoWork("任务1"));Task task2 = Task.Run(() => DoWork("任务2"));await Task.WhenAll(task1, task2);Console.WriteLine("所有任务完成");}static void DoWork(string taskName){Console.WriteLine($"{taskName} 正在执行...");Task.Delay(2000).Wait();Console.WriteLine($"{taskName} 完成");}
}
用途: 演示如何使用Task并行库处理并发任务。
23. HTTP 客户端(HttpClient 示例)
using System;
using System.Net.Http;
using System.Threading.Tasks;class Program
{static async Task Main(){using (HttpClient client = new HttpClient()){string url = "https://jsonplaceholder.typicode.com/posts/1";string response = await client.GetStringAsync(url);Console.WriteLine(response);}}
}
用途: 展示如何通过 HttpClient
发送HTTP请求和处理响应。
24. 构造函数和析构函数
using System;class Person
{public string Name { get; private set; }public Person(string name){Name = name;Console.WriteLine($"{Name} 构造函数被调用");}~Person(){Console.WriteLine($"{Name} 析构函数被调用");}
}class Program
{static void Main(){Person person = new Person("John");}
}
用途: 演示构造函数和析构函数的基本用法。
25. 枚举(Enum)使用
using System;class Program
{enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }static void Main(){Days today = Days.Wednesday;Console.WriteLine($"今天是: {today}");int dayValue = (int)today;Console.WriteLine($"今天是周几(数值): {dayValue}");}
}
用途: 使用枚举来表示一组相关的常量。
这25个C#实战示例涵盖了广泛的场景,从基础IO操作到高级的异步编程、LINQ查询、反射、网络通信等,每个示例都可以进一步扩展并结合实际应用来增强你的代码深度。希望这些能对你有帮助!