Page 36 : 36
Object-oriented Programming in C#
Collection Classes
* Collections - History and Overview
A historic View on Collection Programming
* Generic Collections in C#
Overview of Generic Collections in C#
The Interface
IEnumerable<T>
The Interface
ICollection<T>
The Interface
IList<T>
Overview of the class
Collection<T>
Sample use of class
Collection<T>
Specialization of Collections
Specialization of Collections - a realistic example
Overview of the class
List<T>
Sample use of class
List<T>
Sample use of the Find operations in
List<T>
Sample use of Sort in
List<T>
Sample use of BinarySearch in
List<T>
Overview of the class
LinkedList<T>
The class
LinkedListNode<T>
Sample use of class
LinkedList<T>
Time complexity overview: Collection classes
Using Collections through Interfaces
* Generic Dictionaries in C#
Dictionaries
Overview of Generic Dictionaries in C#
The interface
IDictionary<K,V>
Overview of the class
Dictionary<K,V>
Sample use of class
Dictionary<K,V>
Notes about Dictionary Classes
Time complexity overview: Dictionary classes
* Non-generic Collections in C#
The non-generic collection library in C#
Notes about non-generic Collections
* Patterns and Techniques
The Iterator Design Pattern
Making iterators with yield return
Iterator blocks and yield return
Iterator blocks and yield return
Iterators are implemented by methods made with iterator blocks
IEnumerator<Type> Method() {
// iterator block
Type t; ... yield return t; ... }
A method formed by an iterator block.
Characteristics
The return type of the method must be an enumerator or an enumerable
A method with an iterator block is not executed immediately when calling it
Instead an
enumerable object
is created and returned
Execution starts when
MoveNext
is activated on the enumerable object
The compiler transforms a method with an iterator block to an underlying state machine which manages the traversal
Infinite Collections of Integers