【问题标题】:Reuse the Same Variable For Multiple TryParse() Calls对多个 TryParse() 调用重用相同的变量
【发布时间】:2012-06-08 20:46:33
【问题描述】:

我对此进行了一些阅读,从与我的相似的问题来看,看起来我要问的问题可能(很容易)不太可能......但我还是想验证一下。也许所有这些问题都来自旧版本的 C#/.NET,而且最近已经实现了。

无论如何。我的一个类中有一个 switch-case 语句,其目的本质上是采用 int (typeID) 和 string (value) 并检查 value 是否可以解析为 @ 指示的数据类型987654324@。例如,这是我现在拥有的部分内容:

    case 1:
        char charret;
        return char.TryParse(value, out charret);
    case 2:
        Regex re = new Regex(Constants.REGEX_ALPHANUMERIC);
        return re.IsMatch(value);
    case 3:
        bool boolret;
        return bool.TryParse(value, out boolret);
    //And so on...

我想做的是能够避免您在案例 1 和 3 中看到的 char/bool 实例化。理想情况下,我只想有 return 语句。这没什么大不了的(显然),但如果我能把它做得更(甚至更)紧凑,那就太好了。

【问题讨论】:

  • 不能在switch前声明变量吗?
  • 你应该存储Regex实例而不是每次都重新解析。
  • @Anon,如果它可以归结为一种类型,我会的。它不能。
  • @SLaks,我应该。我将会。好电话。

标签: c# code-reuse tryparse


【解决方案1】:

这本来就是不可能的。

作为out 参数传递的变量必须与参数类型完全匹配。

【讨论】:

  • 真可惜。我希望既然 C# 支持匿名函数,我也可以在这里应用类似的原则。不过,这不是什么大问题,谢谢!
【解决方案2】:

在调用带有 out 参数的函数时,无法避免声明变量。

【讨论】:

    【解决方案3】:

    这篇文章可能会有所帮助,因为它执行通用的 TryParse(如果可用):

    http://toadcode.blogspot.com/2010/10/generic-object-tryparse.html

    【讨论】:

    • 这绝对很有趣。如果要进行更严格的解析,我可能会研究类似的东西,但在这种情况下,这个 switch-case 块中实际上只有 8 个案例 - 就是这样。
    猜你喜欢
    • 2020-10-31
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多