Specialised collections for unique sets, FIFO queues, and LIFO stacks.
var tags = new HashSet<string> { "csharp", "dotnet", "programming" };
tags.Add("csharp"); // ignored — already exists
tags.Add("linq"); // added
Console.WriteLine(tags.Count); // 4
Console.WriteLine(tags.Contains("linq")); // true
// Set operations
var a = new HashSet<int> { 1, 2, 3, 4 };
var b = new HashSet<int> { 3, 4, 5, 6 };
a.IntersectWith(b); // {3,4}
a.UnionWith(b); // {1,2,3,4,5,6}
a.ExceptWith(b); // {1,2}
var queue = new Queue<string>();
queue.Enqueue("Task 1");
queue.Enqueue("Task 2");
queue.Enqueue("Task 3");
Console.WriteLine(queue.Peek()); // "Task 1" (peek without removing)
Console.WriteLine(queue.Dequeue()); // "Task 1" (remove and return)
Console.WriteLine(queue.Count); // 2
var stack = new Stack<int>();
stack.Push(1);
stack.Push(2);
stack.Push(3);
Console.WriteLine(stack.Peek()); // 3 (peek)
Console.WriteLine(stack.Pop()); // 3 (remove and return)
Console.WriteLine(stack.Pop()); // 2
// Useful for: undo history, expression parsing, DFS traversal