Freigeben über


expando-Modifizierer

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 Operator new 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

Version .NET

Siehe auch

Referenz

static-Modifizierer

var-Anweisung

function-Anweisung

class-Anweisung

Konzepte

Gültigkeitsbereich von Variablen und Konstanten

Typanmerkung

Weitere Ressourcen

Modifizierer