18
Generics In and Out Jaliya Udagedara

Generics In and Out

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Generics In and Out

Generics In and Out

Jaliya Udagedara

Page 2: Generics In and Out

What are we going to discuss today?• Non-Generic Collections• Demo 1 : Non-Generic Collections• Generic Collections• Generic List<T> Class• Generic IEnumerable<T> Interface• Constraints on Type Parameter (T)• Demo 2 : Generic Collections (List<T>)• Demo 3 : Creating Custom Generic Class and more.• Advantages of Generics• Some Recommandations

Page 3: Generics In and Out

Collections

ICollection

IList IDictionary

Page 4: Generics In and Out

Non-Generic Collections• System.Collections (Not included in the default C#

template)• Examples

• ArrayList• HashTable etc.

• Store objects• Add anything.• Typecast on removal.

Page 5: Generics In and Out

Demo 1

ArrayList and HashTable

Page 6: Generics In and Out

Generic Collections• System.Collections.Generic (Included in the default C#

template)• Examples

• List<T>• Dictionary<TKey, TValue> etc.

• Store objects• Add item of specific type.• No need to box/unbox.

Page 7: Generics In and Out

Generic Collections contd.• Generic Classes• Generic Interfaces• Generic Methods• Generic Delegates

Page 8: Generics In and Out

The Generic List Class (List<T>)

• List<T> is the generic List class• T represents the type parameter to be supplied

in declarations.• Provides traditional list operations

• Insert/Delete

public class List<T> : IList<T>, ICollection<T>, IList, ICollection, IReadOnlyList<T>, IReadOnlyCollection<T>, IEnumerable<T>, IEnumerable

Page 9: Generics In and Out

List<T> Methods• Add (T item)

• Add item at end of list• Insert (int index, T item)

• Insert item at a specific position• Remove (T item)

• Remove first occurrence of item• RemoveAt (int index)

• Remove item at specified position

Page 10: Generics In and Out

List<T> Methods contd.• Clear()

• Removes all items from the list• bool Contains(T item)

• Determines if item is in the list• int IndexOf(T item)

• Returns index of item, or -1 if not in list.• Sort()

• Array.Sort method• Insertion Sort / Heap Sort or Quick Sort

• …more

Page 11: Generics In and Out

The Generic IEnumerable<T> Interface

• Exposes the enumerator.• Simple iteration over a collection of a specified

type.• List<T> implements IEnumerable<T> • Methods

• GetEnumerator()• A lot of extension methods (visit MSDN)

public interface IEnumerable<out T> : IEnumerable

Page 12: Generics In and Out

Generic Delegates• What is a Delegate?

• Function Pointer in C++.

static void Method1(string s) { // body } static void Method2(int i) { // body }

delegate void MyGenericDelegate<T>(T data);

Page 13: Generics In and Out

Constraints on Type Parameter (T)• where T : struct

• T must be a value type• where T : class

• T must be reference type• where T : <base class>

• T must be deriving from base class• where T : <interface>

• T must be implementing the interface• where T : new()

• T must have parameter less constructor

Page 14: Generics In and Out

Demo 2

List<T>

Page 15: Generics In and Out

Demo 3

Custom Generic Class, Generic Methods, Type Constraints etc.

Page 16: Generics In and Out

So what’s the advantage?

ReusableEfficient

Type Safe (in compile time too)

Page 17: Generics In and Out

Recommendations• For all the applications which targets .NET 2.0 and

above use new generic collection classes instead of the older non-generic counterparts.

• For most scenarios that require collection classes, the recommended approach is to use the ones provided in the .NET Framework class library.

• If the items in the collection are being added/removed from different threads, use collections in the System.Collections.Concurrent which is introduced with .NET Framework 4.

Page 18: Generics In and Out

Thank You!http://www.jaliyaudagedara.blogspot.com/