【问题标题】:How to find if a value is in an array in Visual C#如何在 Visual C# 中查找值是否在数组中
【发布时间】:2010-12-20 22:02:41
【问题描述】:

如果我有一个 int 数组,并且我想快速检查某个 int 值是否在该数组中,有没有办法做到这一点?

【问题讨论】:

    标签: c# arrays .net visual-studio search


    【解决方案1】:

    Enumerable.Contains 如果您使用的是 C# 3.0 或更高版本。

    例如

    var contained = myArray.Contains(4);
    

    【讨论】:

      【解决方案2】:
      var myArray = new []  { 1, 2};
      if myArray.Contains(1)
      {
      do something
      }
      

      您可能需要using System.Linq;

      善良,

      【讨论】:

        【解决方案3】:

        例如,如果你想检查你的数组是否包含 int 0:

        if (your_int_array.Contains(0))
        {
            //Code
        }
        

        【讨论】:

          【解决方案4】:

          您可以使用IndexOf 方法:

          int[] array = new int[] { 1, 2, 3 };
          bool isArrayContains17 = Array.IndexOf(array, 17) > -1;
          

          【讨论】:

            【解决方案5】:

            试试这个功能:

            public static bool FindValueFromArray(object[] Values,object valueToSearch){
                bool retVal = false;
                Array myArray = (Array)Values;
                int found = Array.BinarySearch(myArray, valueToSearch);
                if (found != -1){
                    retVal = true;
                }
                return retVal;
            }
            

            希望这会有所帮助。

            【讨论】:

            • 我已经 +1。但我要补充一点,排序是必需的,只有在您进行重复搜索时才真正值得。
            【解决方案6】:

            Enumerable.Contains() 方法是您在 .NET-Framework 3.5 中的朋友...

            【讨论】:

            • 假设您使用的是 .NET 3.5
            【解决方案7】:

            如果数组已排序,那么这是最快的:

            Array.BinarySearch(myArray, value) >= 0;
            

            如果对数组进行了很多搜索并且很少修改,那么您可能会发现值得在修改后对数组进行排序(使用Array.Sort)并使用上述方法。否则,请使用您喜欢的选项:

            Array.IndexOf(myArray, value) >= 0; //.Net 1
            
            Array.Exists(array, delegate(int x) { return x == value; }); //.Net 2
            
            myArray.Contains(value); //.Net 3
            

            IndexOf 对未排序数组具有最佳性能。第二个选项使用谓词委托,第三个选项需要创建一个枚举器对象。

            【讨论】:

            • 这个新的 Contains 方法没有很好地宣传。
            猜你喜欢
            • 2011-09-15
            • 2012-10-26
            • 2013-01-29
            • 2011-09-26
            • 1970-01-01
            • 2014-10-28
            • 1970-01-01
            • 2014-10-14
            • 1970-01-01
            相关资源
            最近更新 更多