Collections - NOT Threadsafe - Array - List - Dictionary - Key value pairs - De key wordt key.GetHashCode() % de grootte van de dictionary (bijvoorbeeld 100) - Verzadegingsgraad bijhouden - Hoger dan 75% verdubbelen en herstructureren - Key.GetHashCode() % 200 - Nadelen - Resizen - Unsorted - Zie Powerpoint - Stack - Last in first out - .Push(T ) - .Pop(T ) - Mogelijkheden - Undo, Redo - Navigatie back button - Queue - First in first out - .Enqueue(T ) - T .Dequeue() - Mogelijkheden - Wachtrij van events of berichtjes - LinkedList - HashSet - SortedList - Threadsafe - ConcurrentList - ConcurrentDictionary - ConcurrentQueue - Etc. Anonymous types - Type is Anonymous - Equals is anders dan de == (als een van de weinige plekken) - Type van verschillende anonymous dingetjes zijn gelijk - Immutable - Onder water wel een class - Voor efficiency omdat ze vaak op plekken gebruikt worden waar een reference type nodig is - var name = "Jan de Hoop"; - var p = new { name, // name = name Name = name, name.Length // Length = name.Length } Hoe werkt object orientatie? - Elke methode krijgt een 'this' pointer mee Extension methods - Hoe? - Compiler kijkt eerst in type. Dan in extension methods in scope - Nadelen - Alleen te gebruiken als ze in scope zijn - Er kan een andere extension method met dezelfde naam aangeroepen worden - Object orientatie schrijft voor dat je data en methods in 1 file/class komen - Kan niet bij private parts - Multiple inheritance - Er kunnen extension methods gemaakt worden met 'this I...' als parameter - Alle classes die deze interface implementeren krijgen deze methods ICloneable - obj.Clone() - Shallow copy - Gekopieerd ding met pointers naar dezelfde sub objecten - Deep copy - Gekopieerd ding met pointers naar nieuwe sub objecten Higher order function - Functie die werkt met functies (of lambdas)