【问题标题】:Checking a string within an array [duplicate]检查数组中的字符串[重复]
【发布时间】:2014-12-01 19:05:50
【问题描述】:

我正在使用简单的错误处理,并且我认为其他一切都正确,我将如何使 if 语句检查 value 是否等于这个数组?

String[] values = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };

public String Value
{
    get
    {
        return _value;
    }

    set
    {
        if (value != values)
            throw new Exception("Invalid Card Value");
        _value = value;
    }
}

【问题讨论】:

  • 你想看看给定的值是否在数组
  • "我如何让 if 语句检查 Value 是否等于这个数组?",Value 是字符串类型,它永远不能等于字符串数组,而是你应该搜索,如果 Value 包含在数组中,例如 if(!values.Contain(value)) throw new Exception....
  • 旁注 - 在 setter 中抛出 vanilla Exception 似乎是个坏主意。然后调用者必须检查消息以了解如何正确处理异常。要么抛出客户端可以专门捕获和处理的自定义异常,要么在更高级别进行验证。
  • @DStanley 特别考虑到做一个简单的异常扩展是多么容易。
  • @DStanley:还有 ArgumentException 或 ArgumentOutOfRangeException,它们的描述性已经足够了。

标签: c# arrays string


【解决方案1】:

您不能仅将字符串与字符串数组进行比较来确定它是否存在于数组中。您可以使用Contains 方法循环遍历数组并查找值:

        set
        {
            if (!values.Contains(value)) {
                throw new Exception("Invalid Card Value");
            }
            _value = value;
        }

如果您经常这样做,您可以考虑将字符串放入 HashSet<string> 而不是数组。检查值是否存在于哈希集中比检查数组更快。

【讨论】:

  • 为什么投反对票?如果你不解释你认为错的地方是什么,它就无法改进答案。
猜你喜欢
  • 1970-01-01
  • 2018-08-19
  • 1970-01-01
  • 2015-01-22
  • 1970-01-01
  • 2021-10-15
  • 1970-01-01
  • 2013-01-27
  • 2016-02-12
相关资源
最近更新 更多