What is the name of the default delegate in C# which takes no parameters and returns void? I remember there existed such a delegate but I don't remember its name.
- 
                    7What is the name of that seach engine that you can use to find stuff with? ;) http://www.google.se/search?q=c%23+delegate+no+parameters+returns+void – Guffa Nov 01 '10 at 06:52
 - 
                    1@Guffa: Which now happens to point back to this question... – davidg Apr 07 '13 at 10:10
 - 
                    @davidg: That usually happens after only a few minutes, regardless of whether there are any useful answers or not. Just because something appears in a google result isn't any guarantee that there is any useful information there... – Guffa Apr 07 '13 at 10:20
 
5 Answers
Prior to .NET 3.5, it was fairly common to declare your own. Now, Action is a good candidate, but ThreadStart was commonly used (fairly confusingly), or MethodInvoker if you were already referencing winforms.
A quick test (note, running in .NET 4.0, using just some libraries - so not exhaustive):
var qry = from asm in AppDomain.CurrentDomain.GetAssemblies()
          from type in asm.GetTypes()
          where type.IsSubclassOf(typeof(Delegate))
          let method = type.GetMethod("Invoke")
          where method != null && method.ReturnType == typeof(void)
          && method.GetParameters().Length == 0
          orderby type.AssemblyQualifiedName
          select type.AssemblyQualifiedName;
foreach (var name in qry) Console.WriteLine(name);
shows some more candidates:
System.Action, mscorlib...
System.CrossAppDomainDelegate, mscorlib...
System.IO.Pipes.PipeStreamImpersonationWorker, System.Core...
System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack, System.Core...
System.Net.UnlockConnectionDelegate, System...
System.Runtime.Remoting.Contexts.CrossContextDelegate, mscorlib...
System.Threading.ThreadStart, mscorlib...
System.Windows.Forms.AxHost+AboutBoxDelegate, System.Windows.Forms...
System.Windows.Forms.MethodInvoker, System.Windows.Forms...
- 1,026,079
 - 266
 - 2,566
 - 2,900
 
- 
                    5I vote for alternating between AxHost.AboutBoxDelegate and LambdaCompiler.WriteBack. I shall start ripped uses of "Action" out of my code forthwith. – Jon Skeet Nov 01 '10 at 07:17
 
There are several such delgates, but I think you are looking for Action. One other option is MethodInvoker (in System.Windows.Forms).
- 155,851
 - 29
 - 291
 - 343
 
- 
                    
 - 
                    @Tuxedo: `MethodInvoker` has been around since 1.1. If you want something in the `System` namespace there is the `CrossAppDomainDelegate`, but its name is so specific so it will probably seem a bit weird for more general purpose use. – Fredrik Mörk Nov 01 '10 at 06:50
 
You are probably looking for "Action".
Some related reading:
- 1
 - 1
 
- 20,110
 - 21
 - 77
 - 129
 
I may be interpreting your question differently to everyone else, but:
If you are thinking of the delegate to use for event handling, convention is to use EventHandler. This delegate doesn't take 'no' parameters, but it is essentially information-less.
- 63,995
 - 54
 - 186
 - 268
 
In .net 2.0 the MethodInvoker delegate is the recomended way. It is the most generic. As it's name suggest it invokes a method. Others might have the same properties you described but they have different name that suggest other usages or very specific usages in specific areas.
- 6,540
 - 2
 - 41
 - 65