C#中规避非数字字符串参与整数累加的简便实现方法
实现方案
不需要重构你现有零散定义字符串变量的代码,也不用给每个变量单独写冗余的校验逻辑,用以下思路就能简便实现需求:
- 转换整数时用
int.TryParse()替代int.Parse(),这个方法会返回布尔值表示转换是否成功,转换失败不会抛出异常,天然适合跳过非整数字符串的场景 - 计算时把所有待处理的零散变量临时放到一个数组中统一遍历处理,不需要修改原有变量的定义位置和存储方式
基础实现代码
string a = "2"; string b = "3"; string c = "10"; string d = "jk"; string e = "zu"; string f = "15"; public void Add(){ int total = 0; // 临时组装所有待计算的变量,不需要改动原有变量定义 string[] waitCalc = new []{a, b, c, d, e, f}; foreach (string item in waitCalc) { // 转换成功则累加,失败直接跳过 if (int.TryParse(item, out int num)) { total += num; } } // 执行后total值为30,符合预期 }
更简洁的LINQ写法
如果项目中已经引入System.Linq命名空间,可以用聚合求和的写法进一步压缩代码量:
using System.Linq; public void Add(){ int total = new []{a, b, c, d, e, f} .Sum(item => int.TryParse(item, out int num) ? num : 0); }
注意不要用
int.Parse()包裹try-catch的方式实现跳过逻辑,异常捕获的性能开销远高于TryParse的内置校验,属于不推荐的反模式。
这种实现方式的维护成本很低,后续需要新增/删除参与计算的变量时,只需要修改临时数组里的变量名列表即可,不需要重复写校验逻辑。
内容的提问来源于stack exchange,提问作者Vika
相关产品推荐
相关产品推荐

