C# Data Structures AND Generics By Michael and Miles Overview What are data structures? Benefits and uses What are generics? Benefits and uses Live samples Summary Data Structures 1. 2. 3. 4. Collections of data Fetch and store type of data structure depends on situation Examples Array, arraylist, list, linkedlist, stack, queue, dictionary, etc. 5. Most basic is the array Arrays 1. Most commonly used data structure 2. Contents are stored in contiguous memory 3. All data must be same type Pros: Quick direct access (for loop) Easy to use Cons: Searching is proportional to data size Cannot resize array What are generics? 1. One of the most powerful features introduced in C# 2.0 2. System.Collections.Generic… 3. Mainly used with collections/data structures 4. Type safety 5. Generic methods 1. Similar operations on different data types 1. Pros • Type safety • Reduces the need for type casting – less run-time errors • Performance boost – No boxing/unboxing (less code) • maximize code reuse 2. Cons • Can get complex • Learning curve List<T> 1. 2. 3. 4. Similar to arrays – A generic data structure Type-safe Dynamic resizing - .Add() .Insert() .Remove() 5. Built in search methods 6. flexibility Queues Like a circular array First come first serve Insertions made at the tail Pros: Good for processing Cons: Not searchable Not many uses Dictionaries Key value pairs Data is unordered Easy lookups Type safe (generic) Drawbacks of non-generic data structures Data stored as type object – Casting: conversion of data types double x = 1234.7; int a; a = (int)x; // cast double to int – Limited type checking * Increased Overhead – More work to getting something done “CANNOT IMPLICITLY CONVERT TYPE OBJECT TO INT” And then there’s LINQ Write queries (similar to SQL queries) Retrieve info from many data structures – Arrays, List<> etc. Quick example http://msdn.microsoft.com/en -us/library/bb907066.aspx Summary Types of Structures Generics – What they are/how to use Practical uses Questions/ comments/ compliments?