Seguendo il web cast “Raf & Alk su C# 4” di dotnetmarche ho scoperto l’introduzione di questa feature nel framework 4.0 con cui mi ero scontrato tempo fa e che mi sembrava quasi scontata.
Dalla msdn http://msdn.microsoft.com/it-it/library/ee207183.aspx
// Assignment compatibility.
string str = "test";
// An object of a more derived type is assigned to an object of a less derived type.
object obj = str;
// Covariance.
IEnumerable<string> strings = new List<string>();
// An object that is instantiated with a more derived type argument
// is assigned to an object instantiated with a less derived type argument.
// Assignment compatibility is preserved.
IEnumerable<object> objects = strings;
// Contravariance.
// Assume that the following method is in the class:
// static void SetObject(object o) { }
Action<object> actObject = SetObject;
// An object that is instantiated with a less derived type argument
// is assigned to an object instantiated with a more derived type argument.
// Assignment compatibility is reversed.
Action<string> actString = actObject;
Tag di Technorati:
Framework,
C#