Objective

In this article, I will explain three basic terms of C#

1. Call Stack

2. Call Site

3. 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

{

class Program

{

static void Main(string[] args)

{

Method1();

Console.Read();

}

static void Method1()

{

Method2();

Console.WriteLine("Method1");

}

static void Method2()

{

Method3();

Console.WriteLine("Method2");

}

static void Method3()

{

Method4();

Console.WriteLine("Method3");

}

static void Method4()

{

Method5();

Console.WriteLine("Method4");

}

static void 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

clip_image002

If you examine the output, Methods are being called in reverse order.

Program is putting the methods in stack as below,

clip_image003

What is Call Stack?

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

clip_image004

Call Stack is the process of calling method inside a method.

Mathematically, we can say

clip_image006

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.

clip_image008

What is Call Site?

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

clip_image010

Advertisements

4 thoughts on “Basic of C#: Call Stack, Call Site and Stack unwinding

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s