在 C# 中避免字符串添加的简单方法

Vik*_*ika 0 c# unity-game-engine

我有几个字符串变量,有时包含文本,有时包含整数。我有一个函数 Add(),当所有变量为整数时,我将它们相加。问题是当变量是字符串时如何避免它们?例子:

string a = "2";
string b = "3";
string c = "10";
string d = "jk";
string e = "zu";
string f = "15";

public void Add(){
  int total = int.Parse(a) + int.Parse(b) + int.Parse(c) + int.Parse(d) + int.Parse(e) + int.Parse(f);
}
Run Code Online (Sandbox Code Playgroud)

显然上面的代码会失败,因为 d 和 e 是字符串,我正在寻找的是它应该避免添加 d 和 e 字符串,总数应该是 30。我可以检查字符串是整数还是文本,但这需要如果我正在处理的脚本没有字符串作为数组,则永远如此。执行此操作的正确且简单的方法是什么?

Ade*_*mak 6

如果你想使用特定的变量,你可以像这样编写这个用例

void Add()
{
  int aInt, bInt, cInt, dInt, eInt, fInt;
  int.TryParse(a, out aInt);
  int.TryParse(b, out bInt);
  int.TryParse(c, out cInt);
  int.TryParse(d, out dInt);
  int.TryParse(e, out eInt);
  int.TryParse(f, out fInt);
  int total = aInt + bInt + cInt + dInt + eInt + fInt;
}
Run Code Online (Sandbox Code Playgroud)

如果你想使用更多可扩展的代码,你应该使用集合

void Add()
{
  int total = 0;
  foreach (var c in myStrCollection)
  {
    int.TryParse(c, out int a);
    total += a;
  }
}
Run Code Online (Sandbox Code Playgroud)

int.TryParse 会尝试将字符串转换为 int。如果不能转换,变量a默认为0。0 是加法无效元素。如果这个方法是乘法,你应该像这样改变方法。

void Multiply()
{
  int total = 0;
  foreach (var c in myStrCollection)
  {
    bool s = int.TryParse(c, out int a);
    if(!s) a = 1;
    total *= a;
  }
}
Run Code Online (Sandbox Code Playgroud)