(Generic is more important but non generic is not much important)

using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
 
class Program
{
    static void Main()
    {
        // Non-Generic Collections
 
        // ArrayList (Non-Generic)
        ArrayList nonGenericList = new ArrayList();
        nonGenericList.Add(42);
        nonGenericList.Add("Hello, Non-Generic!");
 
        // Hashtable (Non-Generic)
        Hashtable nonGenericDictionary = new Hashtable();
        nonGenericDictionary.Add("Key", 123);
 
        // SortedList (Non-Generic)
        SortedList nonGenericSortedList = new SortedList();
        nonGenericSortedList.Add("Second", 2);
        nonGenericSortedList.Add("First", 1);
 
        // BitArray (Non-Generic)
        BitArray nonGenericBitArray = new BitArray(new[] { true, false, true, false });
 
        // Generic Collections
 
        // List<T> (Generic)               --->[Like C++ Vector]
        List<int> genericList = new List<int>();
        genericList.Add(42);
 
        // Dictionary<TKey, TValue> (Generic)	--->[Like c++ Map]
        Dictionary<string, double> genericDictionary = new Dictionary<string, double>();
        genericDictionary.Add("Value1", 3.14);
 
        // HashSet<T> (Generic)		 --->[Like C++ set , here only keep unique value]
        HashSet<int> genericHashSet = new HashSet<int>();
        genericHashSet.Add(1);
        genericHashSet.Add(2);
 
        // Stack<T> (Generic)
        Stack<string> genericStack = new Stack<string>();
        genericStack.Push("First");
        genericStack.Push("Second");
 
        // Queue<T> (Generic)
        Queue<string> genericQueue = new Queue<string>();
        genericQueue.Enqueue("First");
        genericQueue.Enqueue("Second");
 
        // SortedDictionary<TKey, TValue> (Generic)
        SortedDictionary<string, int> genericSortedDictionary = new SortedDictionary<string, int>();
        genericSortedDictionary.Add("Second", 2);
        genericSortedDictionary.Add("First", 1);
 
        // SortedSet<T> (Generic)
        SortedSet<int> genericSortedSet = new SortedSet<int>();
        genericSortedSet.Add(3);
        genericSortedSet.Add(1);
        genericSortedSet.Add(2);
 
        // LinkedList<T> (Generic)
        LinkedList<int> genericLinkedList = new LinkedList<int>();
        genericLinkedList.AddLast(1);
        genericLinkedList.AddLast(2);
        genericLinkedList.AddLast(3);
 
        // Displaying Values
 
        Console.WriteLine("Non-Generic ArrayList:");
        foreach (var item in nonGenericList)
        {
            Console.WriteLine(item);
        }
 
        Console.WriteLine("\nNon-Generic Hashtable:");
        foreach (DictionaryEntry entry in nonGenericDictionary)
        {
            Console.WriteLine($"{entry.Key}: {entry.Value}");
        }
 
        Console.WriteLine("\nNon-Generic SortedList:");
        foreach (DictionaryEntry entry in nonGenericSortedList)
        {
            Console.WriteLine($"{entry.Key}: {entry.Value}");
        }
 
        Console.WriteLine("\nNon-Generic BitArray:");
        foreach (bool bit in nonGenericBitArray)
        {
            Console.Write(bit ? "1 " : "0 ");
        }
 
        Console.WriteLine("\nGeneric List<int>:");
        foreach (var item in genericList)
        {
            Console.WriteLine(item);
        }
 
        Console.WriteLine("\nGeneric Dictionary<string, double>:");
        foreach (var kvp in genericDictionary)
        {
            Console.WriteLine($"{kvp.Key}: {kvp.Value}");
        }
 
        Console.WriteLine("\nGeneric HashSet<int>:");
        foreach (var item in genericHashSet)
        {
            Console.WriteLine(item);
        }
 
        Console.WriteLine("\nGeneric Stack<string>:");
        while (genericStack.Count > 0)
        {
            Console.WriteLine(genericStack.Pop());
        }
 
        Console.WriteLine("\nGeneric Queue<string>:");
        while (genericQueue.Count > 0)
        {
            Console.WriteLine(genericQueue.Dequeue());
        }
 
        Console.WriteLine("\nGeneric SortedDictionary<string, int>:");
        foreach (var kvp in genericSortedDictionary)
        {
            Console.WriteLine($"{kvp.Key}: {kvp.Value}");
        }
 
        Console.WriteLine("\nGeneric SortedSet<int>:");
        foreach (var item in genericSortedSet)
        {
            Console.WriteLine(item);
        }
 
        Console.WriteLine("\nGeneric LinkedList<int>:");
        foreach (var item in genericLinkedList)
        {
            Console.WriteLine(item);
        }
    }
}