Contrainte where
|
class MaClasse<T, U, V>
where T : IInterface, new()
where U : AutreClasse
where V : class
{
T item = new T();
}
|
Cast
Covariance et Contra variance
|
object o;
o = 0;
List<object> lo;
lo = new List<int>();
lo.Add("MaChaine");
lo = new List<int>().ConvertAll(i => (object)i);
var lo = new List<object>();
lo.Add(0);
lo.Add("MaChaine");
|
Implémentation d'un Convert like
|
public class Generic<T>
{
public T Value { get; set; }
public Generic<TOutput> Convert<TOutput>(Converter<T, TOutput> converter)
{
if (converter == null)
{
throw new ArgumentNullException("converter");
}
var generic = new Generic<TOutput>();
generic.Value = converter(this.Value);
return generic;
}
}
Generic<object> gObject = new Generic<object>() { Value = 0 };
Generic<int> gInt = gObject.Convert(o => (int)o);
|
Utile pour construire un objet T si l'on ne sait pas si T sera un type référence ou un type valeur.
|
public T GetValue<T>()
{
...
return default(T);
}
|