MySingle<T>
est défini comme extension method (MSDN).
Cela signifie que l'utilisation, vous pouvez l'appeler comme ceci:
MyStream<string> stringStream = "a string".MySingle();
Ceci est identique à l'appeler de la manière « standard »:
MyExtensions.MySingle("a string");
Lorsque vous appelez la première manière (comme une méthode d'extension), l'élément sur lequel il est appelé est passé en tant que premier paramètre. Le type du premier paramètre définit donc le type sur lequel la méthode d'extension peut être appelée, mais comme vous avez un type générique ouvert, il peut être appelé sur n'importe quel objet.
Pour définir une méthode d'extension, la classe conteneur et la méthode elle-même doivent être déclarées static
.
Des méthodes d'extension ont été ajoutées dans C# 3.0 et VB 9.0.
Bon point sur le mot-clé 'this' n'étant pas lié aux génériques. – Oded