Istruzione import
Aggiornamento: novembre 2007
Consente di accedere a uno spazio dei nomi contenuto all'interno dello script corrente o in una libreria esterna.
import namespace
Argomenti
- namespace
Obbligatorio. Nome dello spazio dei nomi da importare.
Note
L'istruzione import consente di creare una proprietà sull'oggetto globale con il nome specificato come namespace e di inizializzarla in modo che contenga l'oggetto che corrisponde allo spazio dei nomi importato. Non è possibile assegnare, eliminare o enumerare le proprietà create mediante l'istruzione import. Tutte le istruzioni import vengono eseguite all'avvio di uno script.
L'istruzione import consente di rendere disponibile allo script un dato spazio dei nomi. Lo spazio dei nomi può essere definito nello script mediante l'istruzione package oppure essere fornito da un assembly esterno. Se all'interno dello script non viene rilevato alcuno spazio dei nomi, viene automaticamente ricercato un assembly che corrisponde al nome dello spazio dei nomi nelle directory appositamente specificate, a meno che il programma non sia in fase di compilazione e che non sia stata disattivata l'opzione /autoref. Se ad esempio si importa lo spazio dei nomi Acme.Widget.Sprocket e questo non è definito all'interno dello script corrente, lo spazio dei nomi verrà automaticamente ricercato nei seguenti assembly:
Acme.Widget.Sprocket.dll
Acme.Widget.dll
Acme.dll
Il nome dell'assembly da includere può essere specificato in modo esplicito. Questa operazione risulta necessaria se l'opzione /autoref è disattivata o se lo spazio dei nomi non corrisponde al nome dell'assembly. Il compilatore basato su riga di comando utilizza l'opzione /reference per specificare il nome dell'assembly, mentre ASP.NET utilizza le direttive @ Import e @ Assembly. Per includere in modo esplicito l'assembly mydll.dll, ad esempio, è necessario digitare nella riga di comando quanto segue:
jsc /reference:mydll.dll myprogram.js
Per includere l'assembly da una pagina ASP.NET, è invece necessario specificare quanto segue:
<%@ Import namespace = "mydll" %>
<%@ Assembly name = "mydll" %>
Quando all'interno del codice si fa riferimento a una classe, il compilatore esegue innanzitutto la ricerca della classe all'interno dell'ambito locale. Se non viene trovata alcuna classe corrispondente, la ricerca prosegue in ognuno degli spazi dei nomi, nell'ordine in cui sono stati importati, e si interrompe non appena viene trovata una corrispondenza. Per individuare con esattezza lo spazio dei nomi da cui deriva la classe, è possibile utilizzare il nome completo della classe.
In JScript gli spazi dei nomi nidificati non vengono importati automaticamente. Ogni spazio dei nomi deve essere importato utilizzando lo spazio dei nomi completo. Per accedere, ad esempio, alle classi appartenenti allo spazio dei nomi denominato Outer e allo spazio dei nomi nidificato Outer.Inner, è necessario importare entrambi gli spazi dei nomi.
Esempio
Nell'esempio che segue vengono definiti tre semplici package e vengono importati all'interno dello script gli spazi dei nomi. In genere, ogni package viene incluso in un assembly distinto per consentire la manutenzione e la distribuzione del relativo contenuto.
// Create a simple package containing a class with a single field (Hello).
package Deutschland {
class Greeting {
static var Hello : String = "Guten tag!";
}
};
// Create another simple package containing two classes.
// The class Greeting has the field Hello.
// The class Units has the field distance.
package France {
public class Greeting {
static var Hello : String = "Bonjour!";
}
public class Units {
static var distance : String = "meter";
}
};
// Use another package for more specific information.
package France.Paris {
public class Landmark {
static var Tower : String = "Eiffel Tower";
}
};
// Declare a local class that shadows the imported classes.
class Greeting {
static var Hello : String = "Greetings!";
}
// Import the Deutschland, France, and France.Paris packages.
import Deutschland;
import France;
import France.Paris;
// Access the package members with fully qualified names.
print(Greeting.Hello);
print(France.Greeting.Hello);
print(Deutschland.Greeting.Hello);
print(France.Paris.Landmark.Tower);
// The Units class is not shadowed, so it can be accessed with or without a fully qualified name.
print(Units.distance);
print(France.Units.distance);
L'output dello script è il seguente:
Greetings!
Bonjour!
Guten tag!
Eiffel Tower
meter
meter