Partilhar via


Modificador expando

Declara que instâncias de uma classe de suporte a propriedades expando ou um método é um construtor de objeto expando.

expando statement

Argumentos

  • statement
    Obrigatório.Uma definição de classe ou método.

Comentários

The expando modificador é usado para marcar uma classe sistema autônomo dinamicamente extensível (um que ofereça suporte a propriedades expando). Propriedades expando em expando instâncias da classe devem ser acessadas usando o [] notação; não são acessíveis com o operador ponto. The expando modificador também marca um método sistema autônomo um expando Construtor de objeto.

Classes e métodos em classes podem ser marcados com o expando modificador. Campos, propriedades, interfaces e membros de interfaces não é possível colocar o expando modificador.

An expando classe possui uma propriedade oculta, privada chamada Item que leva um Object parâmetro e retorna um Object. Você não tem permissão para definir uma propriedade com essa assinatura em um expando classe.

Exemplo 1

O exemplo a seguir ilustra um uso do expando modificador em uma classe. A classe expando é como um JScript Object, mas existem algumas diferenças ilustrados aqui.

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.

A saída desse código é

10
ten
twelve
twelve

Exemplo 2

O exemplo a seguir ilustra um uso do expando modificador em um método. Quando o método expando é chamado da maneira normal, ele acessa o campo x.Quando o método é usado sistema autônomo um construtor explícito com o novo operador, adiciona uma propriedade expando para um novo objeto.

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.

A saída desse código é

Method called as a function.
123
456
123

Requisitos

Versão .NET

Consulte também

Conceitos

Escopo de variáveis e constantes

Anotação de tipo

Referência

Modificador estático

demonstrativo var

demonstrativo de função

demonstrativo de classe

Outros recursos

Modificadores