<p>Tous les delegues Func retournent quelque chose ; tous les delegues Action retournent void.</p>
<p><code>Func<TResult></code> ne prend aucun argument et retourne TResult :</p>
<pre><code class="lang-auto">public delegate TResult Func<TResult>()
</code></pre>
<p><code>Action<T></code> prend un argument et ne retourne pas de valeur :</p>
<pre><code class="lang-auto">public delegate void Action<T>(T obj)
</code></pre>
<p><code>Action</code> est le delegue le plus simple, ‘nu’ :</p>
<pre><code class="lang-auto">public delegate void Action()
</code></pre>
<p>Il existe egalement <code>Func<TArg1, TResult></code> et <code>Action<TArg1, TArg2></code> (et d’autres jusqu’a 16 arguments). Tous ceux-ci (sauf <code>Action<T></code>) sont nouveaux dans .NET 3.5 (definis dans System.Core).</p>