读书人

这行代码哪位高手能解释下

发布时间: 2011-12-15 23:41:24 作者: rapoo

这行代码谁能解释下?

C# code
      string[] ArrayA={"a","b","c"};      string[] ArrayB={"b","d","a"};      string[] h=new string[255];      foreach (string s in ArrayA)          {              if (Array.IndexOf<string>(ArrayB, s) >= 0)// Array.IndexOf<string>(ArrayB,s)这是什么用法?  我在MSDN里只查到了              {                                         // Array.IndexOf(Array,Object),  那个<string>是泛型吗                     h.Add(s);                           // 如果我下面这么用的的话 对不对?                 }                                         // ArrayList ArrayA=new..          }                                             // ArrayList ArrayB=...                                                        // foreach(ArrayList s in ArrayA)                                                          //    {                                                        //        if(Array.IndexOf<ArrayList>(ArrayB,s)>=0)                                                        //        h.Add(s);                                                        //     }  


[解决办法]
用的匿名方法
[解决办法]
采用的是匿名方法机制,那段代码的功能就是
取出两个字符串数组当中相同的值存入h数组
[解决办法]
Array.IndexOf 泛型方法 (T[], T, Int32, Int32)
注意:此方法在 .NET Framework 2.0 版中是新增的。

搜索指定的对象,并返回 Array 中从指定索引开始包含指定个元素的这部分元素中第一个匹配项的索引。

命名空间:System
程序集:mscorlib(在 mscorlib.dll 中)


C#
public static int IndexOf<T> (
T[] array,
T value,
int startIndex,
int count
)

类型参数
T
数组元素的类型。


参数
array
要搜索的从零开始的一维 Array。

value
要在 array 中查找的对象。

startIndex
从零开始的搜索的起始索引。

count
要搜索的部分中的元素数。



返回值
如果在 array 中从 startIndex 开始、包含 count 所指定的元素个数的这部分元素中,找到 value 的匹配项,则为第一个匹配项的从零开始的索引;否则为 -1。
异常类型 条件
ArgumentNullException
array 为 空引用(在 Visual Basic 中为 Nothing)。

ArgumentOutOfRangeException
startIndex 超出了 array 的有效索引范围。

- 或 -

count 小于零。

- 或 -

startIndex 和 count 指定的不是 array 中的有效部分。


备注
如果 count 大于 0,则在 Array 中向前搜索,从 startIndex 处开始,到 startIndex + count - 1 处结束。

使用 Object.Equals 方法,将元素与指定的值进行比较。如果元素类型是非内部(用户定义)类型,则使用该类型的 Equals 实现。

此方法的运算复杂度为 O(n),其中 n 是 count。

示例
下面的代码示例演示 IndexOf 方法的所有三种泛型重载。创建一个字符串数组,其中有一项将出现两次,分别位于索引位置 0 和索引位置 5。IndexOf(J[],J) 方法重载从开始处搜索数组,找到第一次出现的字符串。使用 IndexOf(J[],J,Int32) 方法重载从索引位置 3 处开始搜索数组,直至数组的结尾处,找到第二次出现的字符串。最后,使用 IndexOf(J[],J,Int32,Int32) 方法重载从索引位置 2 开始在两个项的范围内进行搜索;它返回 1,因为该范围内没有搜索字符串的实例。

using System;

public class Example
{
public static void Main()
{
string[] dinosaurs = { "Tyrannosaurus",
"Amargasaurus",
"Mamenchisaurus",
"Brachiosaurus",
"Deinonychus",
"Tyrannosaurus",
"Compsognathus" };

Console.WriteLine();
foreach(string dinosaur in dinosaurs)
{
Console.WriteLine(dinosaur);
}

Console.WriteLine(
"\nArray.IndexOf(dinosaurs, \"Tyrannosaurus\"): {0}",
Array.IndexOf(dinosaurs, "Tyrannosaurus"));

Console.WriteLine(
"\nArray.IndexOf(dinosaurs, \"Tyrannosaurus\", 3): {0}",


Array.IndexOf(dinosaurs, "Tyrannosaurus", 3));

Console.WriteLine(
"\nArray.IndexOf(dinosaurs, \"Tyrannosaurus\", 2, 2): {0}",
Array.IndexOf(dinosaurs, "Tyrannosaurus", 2, 2));
}
}

/* This code example produces the following output:

Tyrannosaurus
Amargasaurus
Mamenchisaurus
Brachiosaurus
Deinonychus
Tyrannosaurus
Compsognathus

Array.IndexOf(dinosaurs, "Tyrannosaurus"): 0

Array.IndexOf(dinosaurs, "Tyrannosaurus", 3): 5

Array.IndexOf(dinosaurs, "Tyrannosaurus", 2, 2): -1

读书人网 >C#

热点推荐