泛型委托

1.Action<T> 泛型委托

   有参数,无返回值 。

   public delegate void Action<T>(T obj)


public void ForEach(Action<T> action)
{
    
if (action == null)
    {
        ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match);
    }
    
for (int i = 0; i < this._size; i++)
    {
        action(
this._items[i]);
    }
}

 

 

2. Func<T,TResult> 泛型委托
  
有参数,也可没有参数,一定有返回值。

  public delegate TResult Func<T,TResult>(T arg)


public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
{
    
if (source == null)
    {
        
throw Error.ArgumentNull("source");
    }
    
if (predicate == null)
    {
        
throw Error.ArgumentNull("predicate");
    }
    
if (source is Iterator<TSource>)
    {
        
return ((Iterator<TSource>) source).Where(predicate);
    }
    
if (source is TSource[])
    {
        
return new WhereArrayIterator<TSource>((TSource[]) source, predicate);
    }
    
if (source is List<TSource>)
    {
        
return new WhereListIterator<TSource>((List<TSource>) source, predicate);
    }
    
return new WhereEnumerableIterator<TSource>(source, predicate);
}

 

 

3.Predicate<T> 泛型委托 
  表示定义一组条件并确定指定对象是否符合这些条件的方法.

  public delegate bool Predicate<T>(T obj) 

Predicate 在List Find()中的使用

 

你可能感兴趣的:(泛型)