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。我可以检查字符串是整数还是文本,但这需要如果我正在处理的脚本没有字符串作为数组,则永远如此。执行此操作的正确且简单的方法是什么?
如果你想使用特定的变量,你可以像这样编写这个用例
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)
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |