【idior】.Net2.0的集合操作 --- What i know?

iDotNetSpace發表於2008-06-16

.Net2.0中提供的Array類

【idior】.Net2.0的集合操作 --- What i know?namespace System {
【idior】.Net2.0的集合操作 --- What i know?  
public abstract class Array 
【idior】.Net2.0的集合操作 --- What i know?    
public static TOutput[] ConvertAll<TInput, TOutput>(TInput[] input, Converter<TInput, TOutput> cc);
【idior】.Net2.0的集合操作 --- What i know?    
public static bool Exists<T>(T[] array, Predicate<T> match);
【idior】.Net2.0的集合操作 --- What i know?    
public static T Find<T>(T[] array, Predicate<T> match);
【idior】.Net2.0的集合操作 --- What i know?    
public static T FindLast<T>(T[] array, Predicate<T> match);
【idior】.Net2.0的集合操作 --- What i know?    
public static T[] FindAll<T>(T[] array, Predicate<T> match);
【idior】.Net2.0的集合操作 --- What i know?    
public static int FindIndex<T>(T[] array, Predicate<T> match);
【idior】.Net2.0的集合操作 --- What i know?    
public static int FindLastIndex<T>(T[] array, Predicate<T> match);
【idior】.Net2.0的集合操作 --- What i know?    
public static void ForEach<T>(T[] array, Action<T> action);
【idior】.Net2.0的集合操作 --- What i know?    
public static void Sort<T>(T[] array, Comparison<T> comparer);
【idior】.Net2.0的集合操作 --- What i know?    
public static bool TrueForAll<T>(T[] array, Predicate<T> match);
【idior】.Net2.0的集合操作 --- What i know?  }

【idior】.Net2.0的集合操作 --- What i know?}


以上的集合操作使用到了下面的一些預先定義好的代理.(從他們的名字,你就可以明白他們是幹什麼的) 

【idior】.Net2.0的集合操作 --- What i know?namespace System {
【idior】.Net2.0的集合操作 --- What i know?  
public delegate void    Action<T>(T item);
【idior】.Net2.0的集合操作 --- What i know?  
public delegate int     Comparer<T>(T first, T second); // result works like strcmp
【idior】.Net2.0的集合操作 --- What i know?
  public delegate TOutput Converter<TInput, TOutput>(TInput input);
【idior】.Net2.0的集合操作 --- What i know?  
public delegate bool    Predicate<T>(T item);
【idior】.Net2.0的集合操作 --- What i know?}


下面是一些例子  

 

【idior】.Net2.0的集合操作 --- What i know? int[] list = 12345678910 };
【idior】.Net2.0的集合操作 --- What i know? 
【idior】.Net2.0的集合操作 --- What i know?  
int lastOdd = Array.FindLast(list, delegate(int n) return n % 2 == 1; });
【idior】.Net2.0的集合操作 --- What i know?  
// lastOdd is 9
【idior】.Net2.0的集合操作 --- What i know?
 
【idior】.Net2.0的集合操作 --- What i know?  
int[] evens = Array.FindAll(list, delegate(int n) return n % 2 == 0; });
【idior】.Net2.0的集合操作 --- What i know?  
// evens contains { 2, 4, 6, 8, 10 }
【idior】.Net2.0的集合操作 --- What i know?
 
【idior】.Net2.0的集合操作 --- What i know?  
bool hasMultipleOfSeven = Array.Exists(evens, delegate(int n) return n % 7 == 0; });
【idior】.Net2.0的集合操作 --- What i know?  
// hasMultipleOfSeven is false
【idior】.Net2.0的集合操作 --- What i know?
 
【idior】.Net2.0的集合操作 --- What i know?  Array.Sort(evens, 
delegate(int a, int b) return b - a; });
【idior】.Net2.0的集合操作 --- What i know?  
// evens is now { 10, 8, 6, 4, 2 } , you can define the sort algorithm by yourself
【idior】.Net2.0的集合操作 --- What i know?
 
【idior】.Net2.0的集合操作 --- What i know?  
string[] s = Array.ConvertAll<intstring>(evens, delegate(int n) return "#" + n.ToString(); });
【idior】.Net2.0的集合操作 --- What i know?  
// s is { "#10", "#8", "#6", "#4", "#2" }  this will be cool if the compiler could do the inferencing for ConvertAll
【idior】.Net2.0的集合操作 --- What i know?

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-349331/,如需轉載,請註明出處,否則將追究法律責任。

相關文章