A short summary of each:

**Classes Only:**

- Can support inheritance
- Are reference (pointer) types
- The reference can be null
- Have memory overhead per new instance

**Structs Only:**

- Cannot support inheritance
- Are value types
- Are passed by value (like integers)
- Cannot have a null reference (unless Nullable<T> is used)
- Do not have a memory overhead per new instance - unless 'boxed'

**Both Classes and Structs:**

- Are compound data types typically used to contain a few variables that have some logical relationship
- Can contain methods and events
- Can support interfaces