C# void MethodUnderstand the void keyword. Methods that are void return no values, and we cannot assign to them.
Void. Nothing can be seen. The darkness is absolute. What lies at the bottom of a void? In C# programs we often use void methods (these return nothing).
Void is useful
throughout your source code. But there are some compile-time errors that may be involved. We carefully examine these.Keywords
The void keyword is common and useful. It indicates the evaluation stack of a method must be empty when it returns and no value will be copied into the calling code.
Here: We declare and use a static void method (Example1). The control flow jumps to this method when you invoke it, but there is no result.
Note: It is a compile-time error to assign to the Example method invocation. No variable can be assigned to void.
Next: We use an instance void method. To declare an instance method, omit the static modifier. Methods are by default considered instance.
Parameters: Void methods receive parameters like all methods—they use a simple "return" statement that is followed by a semicolon.Return
C# program that declares void type methods
static void Example1()
Console.WriteLine("Static void method");
Console.WriteLine("Instance void method");
return; // Optional
static void Main()
// Invoke a static void method.
// Invoke an instance void method.
Program program = new Program();
// This statement doesn't compile.
// int x = Example1();
Static void method
Instance void method
We look at the intermediate language generated by the Microsoft C# compiler for the first example method. The intermediate language (IL) relies on an evaluation stack for processing.IL
Ret: The void method must have no elements on the evaluation stack when the "ret" instruction is reached.
Book: The book Expert .NET IL 2.0 Assembler by Serge Lidin provides an excellent description of this requirement.
Intermediate language for void method: IL
.method private hidebysig static void Example1() cil managed
L_0000: ldstr "Static void method"
L_0005: call void [mscorlib]System.Console::WriteLine(string)
An error occurs when you try to assign a variable to the result of a void method. This is the "cannot implicitly convert type" error. To fix this, do not assign to void.
Info: Because void primarily impacts the compile-time processing of a program, no errors will be caused by void specifically at runtime.
Instead: The void type will instead force compile-time errors. These are useful—they help us improve programs.
C# program that causes compile-time error
static void VoidMethod()
static void Main()
int result = VoidMethod();
Cannot implicitly convert type void to int.
A compile-time error can be raised when you try to overload methods based on only their return types. This cannot be done.
Important: You cannot overload methods based on their return types such as void alone in the C# language.Overload
Note: The IL supports overloading on return type. It identifies methods based on a triad: return type, identifier, and parameter list.
This is a delegate type that returns void. It makes it easier to create delegate method objects. Action is a generic class. You specify its argument types as type parameters.Action
A summary. We declared, and invoked, void instance and static methods. The void keyword is common in C# source code. It means that the code returns no value.
© 2007-2020 Sam Allen. Every person is special and unique. Send bug reports to firstname.lastname@example.org.