Abilitare JavaScript per vedere questo sito.

Come dichiarare entità condivise

Entità condivise esterne

Cosa può essere condiviso

Se l'applicazione utilizza più moduli di script per controllare diverse parti dell'applicazione, a volte può essere utile consentire la condivisione di parti degli script tra i moduli di script. I principali vantaggi delle entità condivise sono la riduzione del consumo di memoria e il fatto che il tipo di entità condivisa è lo stesso per tutti i moduli, semplificando così lo scambio di informazioni tra i moduli in cui viene utilizzato.

Le entità condivise hanno una restrizione: non possono accedere a entità non condivise perché queste ultime sono esclusive del modulo di script in cui sono state compilate.

Come dichiarare entità condivise

Per dichiarare un'entità condivisa è sufficiente anteporre la parola chiave "shared" alla dichiarazione ordinaria, ad esempio

shared class Foo
{
  void MethodInFoo(int b) { bar = b; }
  int bar;
}
shared void GlobalFunc() {}

Se lo script tenta di accedere a un'entità non condivisa dall'entità condivisa, il compilatore darà un messaggio di errore.

Ovviamente, per funzionare, gli script di tutti i moduli che condividono l'entità devono implementarla allo stesso modo. Se ciò non avviene, il compilatore darà un errore negli script compilati dopo il primo script che ha implementato l'entità condivisa.

Il modo più semplice per garantire che l'implementazione sia la stessa è utilizzare lo stesso file sorgente, ma questo non è un requisito.

Entità condivise esterne

Un'alternativa alla dichiarazione dell'intera entità condivisa in ogni modulo è quella di dichiarare come esterna l'entità condivisa che si sa essere stata compilata in precedenza. Questo può abbreviare lo script, riducendo sia le dimensioni del codice sorgente sia il tempo di compilazione.

Per dichiarare un'entità condivisa come esterna, basta aggiungere la parola chiave 'external' prima della dichiarazione e terminare la dichiarazione con ';' dopo la firma che identifica univocamente l'entità.

external shared class Foo;
external shared void GlobalFunc();

Quando si compila un'entità condivisa dichiarata come esterna e l'entità condivisa non è stata compilata in nessun altro modulo prima di essa, il compilatore darà un messaggio di errore.

Cosa può essere condiviso

Attualmente possono essere condivise solo le entità classe, interfaccia, funzione, enum e funcdefs.

Le versioni future potrebbero consentire la condivisione anche delle variabili globali.

 

  

Keyboard Navigation

F7 for caret browsing
Hold ALT and press letter

This Info: ALT+q
Page Header: ALT+h
Topic Header: ALT+t
Topic Body: ALT+b
Contents: ALT+c
Search: ALT+s
Exit Menu/Up: ESC