- Used to not be generics and this gave you one of two options:
- Use object as the type everywhere, but this had a performance penalty in that casting would have to be performed to get the actual object type
- Duplicate code for different types
- Most developers will be mmore frequently using generics as opposed to creating them, but if you wanted to create a generic class you would use public class Generic<T>
- The generic collections are one of the commonly used inbuilt generics
- Can restrict generic type e.g. public T Max<T>(T a, T b) where T : IComparable, so that only IComparable objects can be used in the generic method
- Can have generic methods in non generic classes, just need to specify the generic at method level if it's not specified at class level
- Generic constraint types:
- where T : IComparable; T implements the IComparable interface
- where T : Product; T is of type Product or any of its children
- where T : struct; T is a value type, a use case for this is a nullable int implementation
- where T : class; T is a reference type
- where T : new(); T has a default constructor, a use case for this is when you want to instantiate a generic object
- Can chain constraints e.g. where T : IComparable, new()
Tuesday, 6 December 2016
C# Generics
Subscribe to:
Posts (Atom)