.NET: Instanzmethoden und Instanzfelder
Bei einer Instanzmethode wird als erstes Argument des Methodenaufrufs ein .NET-Objekt an die Methode übergeben. Dieses .NET-Objekt wird normalerweise mit Hilfe einer Erweiterungsfunktion (z.B. durch einen Konstruktoraufruf) oder einen Stylesheet-Parameter/eine Stylesheet-Variable erstellt. Ein XSLT-Beispiel dieser Art wäre:
<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>
Im Beispiel oben wird ein System.DateTime Konstruktor (new(2008, 4, 29)) verwendet, um ein .NET-Objekt vom Typ System.DateTime zu erstellen. Diese Objekt wird zweimal erstellt, einmal als Wert der Variablen releasedate, ein zweites Mal als das erste und einzige Argument der Methode System.DateTime.ToString(). Die Instanzmethode System.DateTime.ToString() wird zwei Mal aufgerufen, beide Male mit dem System.DateTime Konstruktor (new(2008, 4, 29)) als erstem und einzigem Argument. In einer dieser Instanzen wird die Variable releasedate verwendet, um das .NET-Objekt abzurufen.
Instanzmethoden und Instanzfelder
Der Unterschied zwischen einer Instanzmethode und einem Instanzfeld ist ein theoretischer. In einer Instanzmethode wird ein .NET-Objekt direkt als Argument übergeben; in einem Instanzfeld wird stattdessen ein Parameter oder eine Variable übergeben - auch wenn der Parameter bzw. die Variable selbst ein .NET-Objekt enthalten kann. So enthält z.B. die Variable releasedate im Beispiel oben ein .NET-Objekt und es ist diese Variable, die als das Argument von ToString() an den zweiten date Elementkonstruktor übergeben wird. Die ToString() Instanz im ersten date Element ist daher eine Instanzmethode, während die zweite als Instanzfeld betrachtet wird. Das in beiden Instanzen erzeugte Ergebnis ist jedoch dasselbe.