Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Task - Implementing a Generic Class | Generics & Reflection
Advanced C# with .NET

Task - Implementing a Generic ClassTask - Implementing a Generic Class

You can clone the base code from the GithHub Repository.

A stack is a special kind of data structure which stores data according to the Last In, First Out (LIFO) principle. A stack has two main methods, namely, Push and Pop. The Push adds a new element to the stack, and Pop removes the most recently added element from the stack. You can imagine it like a stack of books, or any other item. By using Push you add a new item on the top, and by using Pop you remove the item at the top. This is the LIFO principle.

The program contains a class which implements the Stack data structure, however, it only supports integers. Make changes in the class code so that it is able to support any data type.

Hint: The syntax for creating a generic class is class className { /* class code here */ }.

namespace ConsoleApp
{
    internal class Program
    {
        public class Stack<T>
        {
            private List<T> items;

            public Stack()
            {
                items = new List<T>();
            }

            public void Push(T item)
            {
                items.Add(item);
            }

            public T Pop()
            {
                if (items.Count == 0)
                    throw new InvalidOperationException("Stack is empty");

                T poppedItem = items[items.Count - 1];
                items.RemoveAt(items.Count - 1);
                return poppedItem;
            }

            // Gets the last element, without removing it
            public T Peek()
            {
                if (items.Count == 0)
                {
                    throw new InvalidOperationException("Stack is empty");
                }

                return items[items.Count - 1];
            }

            public int Count
            {
                get { return items.Count; }
            }

            public bool IsEmpty
            {
                get { return items.Count == 0; }
            }
        }

        static void Main(string[] args)
        {
            Stack<string> s1 = new Stack<string>();
            s1.Push("a");
            s1.Push("b");
            s1.Push("c");

            Console.WriteLine(s1.Pop());
            Console.WriteLine(s1.Pop());
            Console.WriteLine(s1.Pop());
        }
    }
}
  

Все було зрозуміло?

Секція 4. Розділ 5
course content

Зміст курсу

Advanced C# with .NET

Task - Implementing a Generic ClassTask - Implementing a Generic Class

You can clone the base code from the GithHub Repository.

A stack is a special kind of data structure which stores data according to the Last In, First Out (LIFO) principle. A stack has two main methods, namely, Push and Pop. The Push adds a new element to the stack, and Pop removes the most recently added element from the stack. You can imagine it like a stack of books, or any other item. By using Push you add a new item on the top, and by using Pop you remove the item at the top. This is the LIFO principle.

The program contains a class which implements the Stack data structure, however, it only supports integers. Make changes in the class code so that it is able to support any data type.

Hint: The syntax for creating a generic class is class className { /* class code here */ }.

namespace ConsoleApp
{
    internal class Program
    {
        public class Stack<T>
        {
            private List<T> items;

            public Stack()
            {
                items = new List<T>();
            }

            public void Push(T item)
            {
                items.Add(item);
            }

            public T Pop()
            {
                if (items.Count == 0)
                    throw new InvalidOperationException("Stack is empty");

                T poppedItem = items[items.Count - 1];
                items.RemoveAt(items.Count - 1);
                return poppedItem;
            }

            // Gets the last element, without removing it
            public T Peek()
            {
                if (items.Count == 0)
                {
                    throw new InvalidOperationException("Stack is empty");
                }

                return items[items.Count - 1];
            }

            public int Count
            {
                get { return items.Count; }
            }

            public bool IsEmpty
            {
                get { return items.Count == 0; }
            }
        }

        static void Main(string[] args)
        {
            Stack<string> s1 = new Stack<string>();
            s1.Push("a");
            s1.Push("b");
            s1.Push("c");

            Console.WriteLine(s1.Pop());
            Console.WriteLine(s1.Pop());
            Console.WriteLine(s1.Pop());
        }
    }
}
  

Все було зрозуміло?

Секція 4. Розділ 5
some-alt