Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Aktualisiert: November 2007
Deklariert, dass Instanzen einer Klasse expando-Eigenschaften unterstützen oder dass eine Methode Konstruktor eines expando-Objekts ist.
expando statement
Argumente
- statement
Erforderlich. Die Definition einer Klasse oder Methode.
Hinweise
Mit dem expando-Modifizierer wird eine Klasse als dynamisch erweiterbar gekennzeichnet (als Klasse, die expando-Eigenschaften unterstützt). Auf die expando-Eigenschaften von Instanzen einer expando-Klasse kann nur unter Verwendung der []-Notation zugegriffen werden. Der Zugriff mit dem Punktoperator ist nicht möglich. Der expando-Modifizierer kennzeichnet eine Methode außerdem als Konstruktor eines expando-Objekts.
Mit dem expando-Modifizierer können Klassen sowie Methoden von Klassen gekennzeichnet werden. Felder, Eigenschaften, Schnittstellen und Member von Schnittstellen können nicht mit dem expando-Modifizierer gekennzeichnet werden.
Eine expando-Klasse verfügt über eine verborgene, private Eigenschaft mit der Bezeichnung Item, der ein Object-Parameter übergeben wird und die ein Object zurückgibt. In einer expando-Klasse dürfen Sie keine Eigenschaft mit dieser Signatur definieren.
Beispiel 1
Das folgende Beispiel veranschaulicht die Verwendung des expando-Modifizierers bei einer Klasse. Die expando-Klasse ist einem Object von JScript ähnlich, jedoch bestehen einige Unterschiede, die im Folgenden veranschaulicht werden:
expando class CExpandoExample {
var x : int = 10;
}
// New expando class-based object.
var testClass : CExpandoExample = new CExpandoExample;
// New JScript Object.
var testObject : Object = new Object;
// Add expando properties to both objects.
testClass["x"] = "ten";
testObject["x"] = "twelve";
// Access the field of the class-based object.
print(testClass.x); // Prints 10.
// Access the expando property.
print(testClass["x"]); // Prints ten.
// Access the property of the class-based object.
print(testObject.x); // Prints twelve.
// Access the same property using the [] operator.
print(testObject["x"]); // Prints twelve.
Ausgabe dieses Codes:
10
ten
twelve
twelve
Beispiel 2
Das folgende Beispiel veranschaulicht die Verwendung des expando-Modifizierers bei einer Methode. Wenn die expando-Methode auf die übliche Weise aufgerufen wird, greift sie auf das Feld x zu. Wenn die Methode als expliziter Konstruktor mit dem new-Operator verwendet wird, fügt sie einem neuen Objekt eine expando-Eigenschaft hinzu.
class CExpandoExample {
var x : int;
expando function constructor(val : int) {
this.x = val;
return "Method called as a function.";
}
}
var test : CExpandoExample = new CExpandoExample;
// Call the expando method as a function.
var str = test.constructor(123);
print(str); // The return value is a string.
print(test.x); // The value of x has changed to 123.
// Call the expando method as a constructor.
var obj = new test.constructor(456);
// The return value is an object, not a string.
print(obj.x); // The x property of the new object is 456.
print(test.x); // The x property of the original object is still 123.
Ausgabe dieses Codes:
Method called as a function.
123
456
123
Anforderungen
Siehe auch
Konzepte
Gültigkeitsbereich von Variablen und Konstanten