为什么我的数组中的IndexOf不可用?我的目标是.Net 3.5

时间:2010-02-27 23:38:18

标签: c# arrays

我有一个直接的字符串数组,为什么IndexOf不可用?我的目标是.Net 3.5

由于

3 个答案:

答案 0 :(得分:4)

您是在谈论Array.IndexOf方法:

var array = new[] { "a", "b", "c" };
Console.WriteLine(Array.IndexOf(array, "b"));

答案 1 :(得分:1)

可能是因为你假设它是一个实例方法而不是静态方法:

using System;

class Program {
  static void Main(string[] args) {
    string[] arr = new string[] { "hello", "world" };
    int index = Array.IndexOf(arr, "world");
    // Not:
    //int index = arr.IndexOf("world");
    System.Diagnostics.Debug.Assert(index == 1);
  }
}

考虑List<string>而不是数组,List&lt;&gt; .IndexOf()是一种实例方法。

答案 2 :(得分:0)

您认为可以将IndexOf应用为实例方法的原因是某些类型的扩展方法包含了Microsoft对GeoCoordinate类的Array.IndexOf()。

以下内容适用于所有数组:

public static class ExtensionMethods
{
  public static int IndexOf(this object[] oa, object o)
  {
    return Array.IndexOf(oa, o);
  }
}

这里有一段代码,展示代码如何变得更清晰 - 以使其依赖于扩展方法类为代价。我故意在其中一个上取消语法糖,这样你就可以并排比较。

  int m = Array.IndexOf(II, closestItems[0]);
  int n = II.IndexOf(closestItems[1]);