 <p>You have to pass the delegate into the method with out the "Cattle Wars" parameter</p> <pre><code> testDel(p.handler); </code></pre> <p>Then you method should look like the following.</p> <pre><code> public void testDel(Del d) { d.Invoke("L"); } </code></pre> <p>I will have to say that delegates still seem strange to me. I know that they are just variables that are type safe and thread safe. You can use the variable just like calling the method name.</p> <pre><code> public delegate void Del(string e); Del handler = DelegateMethod; </code></pre> <p>In your example here your delegate can be set to any method that has a return type of <strong>void</strong> and takes one argument that is a string. </p> <pre><code> Del handler = DelegateMethod; </code></pre> <p>The above is where you declare you delegate but you also can declare the delegate to any methods that excepts void and one parameter as a string.</p> <pre><code> handler = BaseBall; public void BaseBall(string a) { //code here } </code></pre> <p>I would just keep reading you will learn as you go.</p>