我在我们的代码的方法中看到了很多这样的东西:

int num1 = 0;
if (Char.IsDigit(myStr[2]) && Int32.TryParse(myStr[2].ToString(), out num1) == false)
{
    valid = false;
}

那么他们只是确保我们的第三个字符是数字吗?

最佳答案

看起来您拥有的代码是为了提高效率而这样做的。编写此代码的人知道 myStr 中字符串的结构,有时在第三个位置有一个非数字符号。这就是为什么他进行此优化以检查第三个符号,然后再支付将字符数组转换为字符串的费用,然后将其解析。

有可能,这种优化还为时过早:尽管制作临时丢弃的字符串不是免费的,但这种优化仅在您在非常紧凑的循环中进行大量操作的情况下才有意义。换句话说,只有当它出现在性能分析器输出的顶部附近时,你才这样做。

您可以优化此检查以避免 if :

int num1 = 0;
valid &= !Char.IsDigit(myStr[2]) || Int32.TryParse(myStr[2].ToString(), out num1);

关于c# - 检查 Int32.TryParse 的更简单方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26303276/

10-13 06:53