Avevo questo post in cantiere da qualche tempo, da quando un paio di miei colleghi
mi hanno esternato le loro perplessità su un particolare behavior di C# compiler.
Partiamo dal primo snippet:
1: Boolean AreEqual<T>(T a, T b)
2: {
3: return a == b;
4: }
Si noterà subito che il codice in oggetto non compila.
Limitandosi ad aggiungere il constraint "class", la compilazione va a buon fine.
1: Boolean AreEqual<T>(T a, T b) where T : class
2: {
...