一、前言为什么必须用好C#工具类很多新手开发者偏爱手写基础工具逻辑看似灵活实则隐患极多核心问题如下代码冗余臃肿项目中重复写判空、字符串裁剪、日期格式化、集合遍历过滤逻辑代码复用率极低BUG概率飙升手写逻辑极易出现空引用异常、日期越界、字符串空值报错、类型转换失败等问题性能优化不足.NET原生工具类经过微软底层深度优化内存占用、执行效率远优于自定义手写逻辑团队规范混乱全员手写工具逻辑会导致代码风格不统一后期迭代、排查问题、代码重构成本极高接下来按开发高频场景逐一讲解C#核心常用工具类的实战用法、核心方法及避坑要点。二、C#原生高频工具类无需引入第三方NuGet这类工具类属于.NET基础类库无需安装任何插件、NuGet包新建项目即可直接使用是日常开发的首选优先级最高。1. string 字符串静态工具类核心必备字符串处理是C#开发最常用的场景原生string 静态工具方法可以完美解决空值判断、字符串拼接、分割、替换、格式化等场景规避大量手写BUG。核心常用方法实战代码using System; namespace CSharpUtilDemo { class StringUtilDemo { static void Main(string[] args) { string str1 null; string str2 ; string str3 .NET工具类 ; // 1. 核心判空判断是否为NULL或空字符串最常用 Console.WriteLine(string.IsNullOrEmpty(str1)); // True Console.WriteLine(string.IsNullOrEmpty(str2)); // True // 2. 判断是否为NULL、空、空白字符进阶判空推荐 Console.WriteLine(string.IsNullOrWhiteSpace(str3)); // False // 3. 字符串拼接高效拼接优于号 string joinStr string.Join(-, 2026, 6, 25); Console.WriteLine(joinStr); // 2026-6-25 // 4. 字符串格式化 string formatStr string.Format(当前框架{0}版本{1}, .NET Core, 6.0); Console.WriteLine(formatStr); // 5. 对比字符串忽略大小写规避大小写匹配BUG bool isEqual string.Equals(Net, net, StringComparison.OrdinalIgnoreCase); Console.WriteLine(isEqual); // True } } }避坑指南禁止直接使用 strnull 或 str 单独判空业务场景优先使用string.IsNullOrEmpty含空白字符校验场景必须用string.IsNullOrWhiteSpace。2. Convert 类型转换工具类Convert 是C#原生万能类型转换工具类支持字符串、数字、布尔、日期等所有基础类型的互相转换是类型解析、参数转换的核心工具。核心实战代码using System; namespace CSharpUtilDemo { class ConvertUtilDemo { static void Main(string[] args) { string numStr 1024; string boolStr true; // 字符串转整数 int num Convert.ToInt32(numStr); // 字符串转布尔 bool flag Convert.ToBoolean(boolStr); // 数字转字符串 string str Convert.ToString(2026); // 字符串转日期 DateTime date Convert.ToDateTime(2026-06-25); Console.WriteLine(num); Console.WriteLine(flag); Console.WriteLine(str); Console.WriteLine(date); } } }避坑指南Convert转换失败会直接抛异常不确定参数合法性时优先使用int.TryParse、DateTime.TryParse安全转换。3. DateTime 日期时间工具类DateTime 是C#原生日期处理工具覆盖日期获取、格式化、时间加减、时间戳转换等所有基础时间场景是业务开发必备工具。核心实战代码using System; namespace CSharpUtilDemo { class DateTimeUtilDemo { static void Main(string[] args) { // 获取当前系统时间 DateTime now DateTime.Now; // 获取当前UTC时间服务器推荐使用规避时区问题 DateTime utcNow DateTime.UtcNow; // 获取今日日期零点时间 DateTime today DateTime.Today; // 时间加减 DateTime tomorrow now.AddDays(1); // 明天 DateTime lastHour now.AddHours(-1); // 上一小时 // 日期格式化 string dateStr now.ToString(yyyy-MM-dd HH:mm:ss); Console.WriteLine(当前时间 dateStr); // 获取时间戳13位毫秒级 long timeStamp new DateTimeOffset(now).ToUnixTimeMilliseconds(); Console.WriteLine(时间戳 timeStamp); } } }避坑指南跨时区、服务器部署场景禁止使用DateTime.Now优先使用DateTime.UtcNow避免时区偏差导致时间错乱。4. Array / Enumerable 集合工具类C#原生集合工具配合LINQ可快速实现数组、集合的遍历、过滤、排序、去重、判空无需手写循环逻辑。核心实战代码using System; using System.Linq; namespace CSharpUtilDemo { class CollectionUtilDemo { static void Main(string[] args) { int[] nums { 1, 2, 2, 3, 4, 5 }; // 集合判空 bool isEmpty nums null || !nums.Any(); Console.WriteLine(集合是否为空 isEmpty); // 去重 var distinctNums nums.Distinct().ToArray(); // 过滤大于2的数字 var filterNums nums.Where(x x 2).ToList(); // 排序 var orderNums nums.OrderBy(x x).ToArray(); Console.WriteLine(去重后 string.Join(,, distinctNums)); Console.WriteLine(过滤后 string.Join(,, filterNums)); } } }避坑指南集合判空优先使用Any()而非Count()0Any() 找到第一个元素即终止性能更高。三、.NET高频拓展工具方法原生推荐除了静态工具类C#拓展方法是开发中最实用的特性无需实例化、直接点调用极大简化代码以下是项目中通用的高频拓展。1. 通用对象判空拓展using System; namespace CSharpUtilDemo { public static class ObjectExtend { // 对象判空 public static bool IsNull(this object obj) { return obj null; } // 对象非空 public static bool IsNotNull(this object obj) { return obj ! null; } } }2. 字符串常用拓展using System; namespace CSharpUtilDemo { public static class StringExtend { // 字符串空判断 public static bool IsEmpty(this string str) { return string.IsNullOrWhiteSpace(str); } // 去除首尾空格 public static string TrimAll(this string str) { return str?.Trim() ?? string.Empty; } } }总结C#工具类使用最佳实践优先原生基础判空、转换、日期、集合操作优先使用.NET原生工具无第三方依赖、性能最优规避异常类型转换、字符串解析场景优先使用Try系列安全方法避免程序崩溃统一封装项目通用逻辑统一封装拓展方法杜绝重复代码统一团队编码规范按需引入复杂业务场景按需引入Newtonsoft、NPOI等第三方库不滥用依赖