Έχω πρόχειρα 2/4
1. Το πρώτο είναι η δήλωση ενός αντικειμένου που αποτελεί instance του MyClass<T>. Δηλαδή όταν δηλώνεις μια κλάση λες class MyClass<T> ή class MyClass<Α> ή class MyClass<WhatEver> where WhatEver : Mitsos. To constraint σκέψου το σαν να έλεγες στον κώδικα
Mitsos obj = new Mitsos;
bool isMitsos = obj is Mitsos;
3. MyClass<T> where T : Mitsos, new() ή MyClass<T> where T : new()
Δηλώνεις πως η κλάση Τ πρέπει να έχει public constructor χωρίς παραμέτρους. Αυτό το κάνεις γιατι μπορεί σε κάμια μέθοδο να θέλεις να δημιουργήσεις ένα νέο αντικείμενο τύπου Τ. Όπότε το δημιουργείς Τ obj = new T(); Αλλά για να μπορέσεις να το γράψεις θα πρέπει να υπάρχει αυτός ο περιορισμός.