When we call a method in c# in a nested manner , there are three terms come into action. They are Call stack , Call Site and Stack unwinding This article is going to explain about that.
Objective
In this article, I will explain three basic terms of C#
- Call Stack
- Call Site
- Stack Unwinding
Let us say, you got the below code
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication7
{
classProgram
{
staticvoid Main(string[] args)
{
Method1();
Console.Read();
}
staticvoid Method1()
{
Method2();
Console.WriteLine("Method1");
}
staticvoid Method2()
{
Method3();
Console.WriteLine("Method2");
}
staticvoid Method3()
{
Method4();
Console.WriteLine("Method3");
}
staticvoid Method4()
{
Method5();
Console.WriteLine("Method4");
}
staticvoid Method5()
{
Console.WriteLine("Method5");
}
}
}
I have just created five dummy methods and calling them in nested manner. The methods, I have created are Method1 to Method5. If you run the above program , you will get output as below

If you examine the output, Methods are being called in reverse order.
Program is putting the methods in stack as below,

What is Call Stack?
Here, we are calling a method inside a method and so on and this is called CALL STACK.

Call Stack is the process of calling method inside a method.
Mathematically, we can say

What is Stack Unwinding?
Once the method call is completed that method is removed from the stack and this process is known as Stack Unwinding.

What is Call Site?
In above program, we are calling Method3 from Method2, so we can say Method2 is call site of Method3
