You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 17:24:21