当前位置: 首页 > news >正文

.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!");}
}

用途: 展示如何使用泛型委托 FuncAction 实现灵活的回调机制。


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查询、反射、网络通信等,每个示例都可以进一步扩展并结合实际应用来增强你的代码深度。希望这些能对你有帮助!


http://www.mrgr.cn/news/51332.html

相关文章:

  • 【面经】2024年软件测试面试题,精选100 道(附答案)
  • OpenGauss学习笔记
  • 【开源】Appium:自动化移动应用测试的强大工具
  • 10月报名 | 海克斯康Adams二次开发培训
  • 前端全栈混合之路Deno篇:Deno 2.0 的权限系统详解和多种权限配置权限声明方式 -一次性搞懂和学会用
  • vulhub复现记录
  • 面试记录一
  • 概率测试:用随机性来发现难以复现的问题
  • STM32 QSPI接口驱动GD/W25Qxx配置简要
  • 瞬时存取,无限可能:顺序表的独特魅力
  • 代码随想录训练营Day35 | 452. 用最少数量的箭引爆气球 | 435. 无重叠区间 | 763.划分字母区间
  • 富格林:竭力击退欺诈守卫出金
  • Integer中的getInteger()方法和parseInt()方法有什么区别?
  • 【数据分享】全国文化-限额以上文化批发和零售业企业情况(2017-2021年)
  • 域名邮箱免费注册指南:烽火域名邮箱优势?
  • Windows系统上根据端口号查找对应进程
  • 5大主流方案对比:MySQL千亿级数据线上平滑扩容实战
  • 00 springboot项目创建
  • LSL常见应用场景及示例<一>
  • 2024最新的软件测试面试题(含答案+文档)