title: How do you use Func<> and Action<> when designing applications?
body: <p>All the examples I can find about Func&lt;> and Action&lt;> are <strong>simple</strong> as in the one below where you see <em>how</em> they technically work but I would like to see them used in examples where they solve problems that previously could not be solved or could be solved only in a more complex way, i.e. I know how they work and I can see they are <strong>terse and powerful</strong>, so I want to understand them in a <strong>larger sense</strong> of what kinds of problems they solve and how I could use them in the design of applications.</p>
  
  <p><strong>In what ways (patterns) do you use Func&lt;> and Action&lt;> to solve real problems?</strong></p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  
  namespace TestFunc8282
  {
      class Program
      {
          static void Main(string[] args)
          {
              //func with delegate
              Func&lt;string, string&gt; convert = delegate(string s)
              {
                  return s.ToUpper();
              };
  
              //func with lambda
              Func&lt;string, string&gt; convert2 = s =&gt; s.Substring(3, 10);
  
              //action
              Action&lt;int,string&gt; recordIt = (i,title) =&gt;
                  {
                      Console.WriteLine("--- {0}:",title);
                      Console.WriteLine("Adding five to {0}:", i);
                      Console.WriteLine(i + 5);
                  };
  
              Console.WriteLine(convert("This is the first test."));
              Console.WriteLine(convert2("This is the second test."));
              recordIt(5, "First one");
              recordIt(3, "Second one");
  
              Console.ReadLine();
  
          }
      }
  }
  </code></pre>