Problem with understanding the exercise: C# Part 2 Inheritance exercise: Design a Stack

I’m having a problem understanding the exercise.
I got the idea of creating the class and methods
but I didn’t understand the concept of stack
and how to implement it.

What object do I “push” where do I push it to?
Do I need to create a List? or an array first?
How do I remove the first pushed stack
and where do I return it?

Attached my attempt at understanding how to do this exercise

This is my solution, but still not sure it’s correct or not.
I didn’t use any cast cuz Main method already auto casting for me.
And I did not use loop in Pop() method but use the concept of loop to remove List element
when Main method call Pop().

class Stack
{
List objList = new List();
public void Push(object obj)
{
if (obj != null)
objList.Add(obj);
else
throw new InvalidOperationException(“Exception”);
}
public object Pop()
{
if (objList != null)
{
object popObject=null;
int i = objList.Count - 1;
popObject = objList[i];
objList.RemoveAt(i);
return popObject;
}
else
throw new InvalidOperationException(“Exception”);
}
public void Clear()
{
objList.Clear();
}
}
static void Main(string args)
{
var stack = new Stack();
stack.Push(1);
stack.Push(2);
stack.Push(3);
Console.WriteLine(stack.Pop());
Console.WriteLine(stack.Pop());
Console.WriteLine(stack.Pop());
}