【问题标题】:if condition with each item in array [duplicate]如果条件与数组中的每个项目[重复]
【发布时间】:2020-03-07 15:16:19
【问题描述】:

我的英语不好。所以我厌倦了用数组中的每个项目写 if 条件。这个有什么解决办法。谢谢你的帮助 这段代码累死我了,怎么办呢

public bool AllowElement(Element element)// element is object by mouse houver on Revit program
    {
        BuiltInCategory[] BIC  = new BuiltInCategory[]{Frame, Column, Slab,Foundation, etc...}// BIC is 
        in enum, and this is declare with params key word
        if( ele ==  (int)BIC.Frame || ele ==  (int)BIC.Column ||
            ele ==  (int)BIC.Slab || ele ==  (int)BIC.Foundation ||
            ele == (int)BIC.etc....)
        {
            return true
        }
    }

结束我写的这段代码,但我觉得它不是真的

public bool AllowElement(Element element)
    {
        int ele = element.Category.Id.IntegerValue;
        foreach (var item in BIC)
        {
            if (ele == (int)item)
                return true;

        }
        return false;
    }

【问题讨论】:

  • 很难根据您的样本来判断您的要求,您可以尝试 Exists、IndexOf、数组或者如果它是一个枚举而不是 IsDefined
  • 但是如何将条件嵌套到数组中呢?
  • 这能回答你的问题吗? Value is in enum list
  • 如果列表中的任何条目与您指定的条件匹配,您可以使用.Any 返回布尔值。
  • 更改您发布的第二个代码。如果BIC 是一个枚举,那么试试if (Enum.IsDefined(typeof(BIC), ele)) { return true; }

标签: c#


【解决方案1】:

您是否尝试过使用 Linq 验证项目是否存在?

    public bool AllowElement(Element element)
    {
        return BIC.Any(x => (int)x == element.Category.Id.IntegerValue);
    }

Any() 方法如果有任何匹配条件Microsoft docs on Any的元素返回true

这是假设 BIC 在此方法的范围内。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-20
    • 2021-10-03
    • 2020-02-15
    • 2016-12-21
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多