.NET: Méthodes d'instance et Champs d'instance
Une méthode d'instance a un objet .NET qui lui est passé en tant que son premier argument de l'appel de méthode. Un tel objet .NET est généralement créé en utilisant une fonction d'extension (par exemple un appel de constructeur) ou un paramètre/variable de feuille de style. Un exemple XSLT de ce type serait :
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:output method="xml" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:variable name="releasedate"
select="date:new(2008, 4, 29)"
xmlns:date="clitype:System.DateTime"/>
<doc>
<date>
<xsl:value-of select="date:ToString(date:new(2008, 4, 29))"
xmlns:date="clitype:System.DateTime"/>
</date>
<date>
<xsl:value-of select="date:ToString($releasedate)"
xmlns:date="clitype:System.DateTime"/>
</date>
</doc>
</xsl:template>
</xsl:stylesheet>
Dans l'exemple ci-dessus, un constructeur System.DateTime (new(2008, 4, 29)) est utilisé pour créer un objet .NET de type System.DateTime. Cet objet est créé deux fois, une fois en tant que la valeur de la variable releasedate, une deuxième fois en tant que le premier et seul argument de la méthode System.DateTime.ToString(). La méthode d'instance System.DateTime.ToString() est appelée deux fois, les deux fois avec le constructeur System.DateTime (new(2008, 4, 29)) en tant que son premier et seul argument. Dans une de ces instances, la variable releasedate est utilisée pour obtenir l'objet .NET.
Méthodes d'instance et champs d'instance
La différence entre une méthode d'instance et un champ d'instance est théorique. Dans une méthode d'instance, un objet .NET est passé directement en tant qu'un argument ; dans un champ d'instance, un paramètre ou une variable est passé à la place—bien que le paramètre ou la variable puisse contenir un objet .NET. Par exemple, dans l'exemple ci-dessus, la variable releasedate contient un objet .NET, et c'est cette variable qui est passée en tant que l'argument de ToString() dans le deuxième constructeur d'élément date. C'est pourquoi, l'instance ToString() dans le premier élément date est une méthode d'instance alors que le deuxième est considéré être un champ d'instance. Le résultat produit dans les deux instances, néanmoins, est le même.