<Type Name="Action&lt;T&gt;" FullName="System.Action&lt;T&gt;">
  <TypeSignature Language="C#" Value="public delegate void Action&lt;in T&gt;(T obj);" />
  <AssemblyInfo>
    <AssemblyName>mscorlib</AssemblyName>
    <AssemblyVersion>2.0.0.0</AssemblyVersion>
    <AssemblyVersion>4.0.0.0</AssemblyVersion>
  </AssemblyInfo>
  <TypeParameters>
    <TypeParameter Name="T">
      <Constraints>
        <ParameterAttribute>Contravariant</ParameterAttribute>
      </Constraints>
    </TypeParameter>
  </TypeParameters>
  <Base>
    <BaseTypeName>System.Delegate</BaseTypeName>
  </Base>
  <Parameters>
    <Parameter Name="obj" Type="T" />
  </Parameters>
  <ReturnValue>
    <ReturnType>System.Void</ReturnType>
  </ReturnValue>
  <Docs>
    <typeparam name="T">The type.   </typeparam>
    <param name="obj">The object on which to perform an action.</param>
    <summary>A delegate to a method that returns no values, and takes one parameter.</summary>
    <remarks>Since the compiler can infer the types, you do not need to provide the type, this is typically used with the <see cref="T:System.Array.Foreach" /> method or the <see cref="T:System.Collections.Generic.List" />'s ForEach method.

<example><code lang="C#">
//
// Simple "echo" implementation
//
using System;

class X {

	static void Main (string [] args)
	{
		Array.ForEach (args, print);
		Console.WriteLine ();
	}

	static void print (string a)
	{
		Console.Write (a);
		Console.Write (" ");
	}
}
  </code></example></remarks>
    <since version=".NET 2.0" />
  </Docs>
</Type>
