Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Aggiornamento: Luglio 2008
Messaggio di errore
Impossibile trovare il tipo o il nome dello spazio dei nomi 'tipo/spazio dei nomi'. Probabilmente manca una direttiva using o un riferimento a un assembly.
The type or namespace name 'type/namespace' could not be found (are you missing a using directive or an assembly reference?)
Non è stato trovato un tipo. È possibile che non sia stato inserito un riferimento (/reference) all'assembly contenente il tipo o che il relativo utilizzo non sia stato qualificato correttamente con la direttiva using.
Questo errore può essere determinato da numerose cause:
Il nome del tipo o dello spazio dei nomi che si sta tentando di utilizzare potrebbe essere stato digitato in modo errato, ad esempio non rispettando l'esatta combinazione di maiuscole e minuscole. Se non si utilizza il nome corretto, il compilatore non è in grado di trovare la definizione del tipo o dello spazio dei nomi a cui viene fatto riferimento nel codice. Questo problema si verifica quasi sempre perché nel codice C# viene fatta distinzione tra maiuscole e minuscole e nel fare riferimento al tipo non è stata rispettata l'esatta combinazione di maiuscole e minuscole. Dataset ds; genererà ad esempio l'errore CS0246, perché la lettera s in Dataset non è in maiuscolo.
Se l'errore è causato dal nome di uno spazio dei nomi, è possibile che non sia stato creato un riferimento (/reference) all'assembly contenente lo spazio dei nomi. È possibile ad esempio che il codice contenga using Accessibility;. Se tuttavia nel progetto non viene fatto riferimento all'assembly Accessibility.dll, verrà restituito l'errore CS0246. Per informazioni su come aggiungere un riferimento nell'ambiente di sviluppo, vedere finestra di dialogo Aggiungi riferimento.
Se l'errore è causato dal nome di un tipo, è possibile che non si disponga della direttiva using corretta oppure che il nome del tipo non sia completo. Si consideri la seguente riga di codice: DataSet ds;. Per utilizzare il tipo DataSet è necessario eseguire due operazioni. Occorre innanzitutto fare riferimento all'assembly contenente la definizione del tipo DataSet, quindi è necessaria una direttiva using per lo spazio dei nomi in cui è presente DataSet. Poiché, ad esempio, DataSet è presente nello spazio dei nomi System.Data, all'inizio del codice occorrerà inserire la seguente istruzione: using System.Data;.
Il secondo passaggio non è obbligatorio, tuttavia se viene omesso, in seguito sarà necessario fare riferimento al tipo DataSet utilizzando il nome completo. Utilizzare il nome completo significa specificare lo spazio dei nomi e il tipo ogni volta che nel codice viene fatto riferimento al tipo. Se il secondo passaggio è stato ignorato, il codice della dichiarazione sopra indicata dovrà essere modificato in: System.Data.DataSet ds;.
Se l'errore è causato da un non tipo, è possibile che sia stata utilizzata una variabile o un altro elemento laddove era previsto un tipo. Questo errore viene restituito, ad esempio, se nell'istruzione is viene utilizzato un oggetto Type anziché un tipo effettivo.
If you use a using alias directive and do not fully qualify the type name, this error is generated. A using alias directive does not use other using directives in the source code file to resolve types. For example, the following code generates CS0246 because the type List<int> is not fully qualified, even though a using directive for System.Collections.Generic is present:
using System.Collections.Generic; // Generates CS0246: using myAliasName = List<int>; // Does not generate an error: using myAliasName2 = System.Collections.Generic.List<int>
Il seguente codice di esempio genera l'errore CS0246:
// CS0246.cs
// using System.Diagnostics;
public class MyClass
{
[Conditional("A")] // CS0246, uncomment using directive to resolve
public void Test()
{
}
public static void Main()
{
}
}
Di seguito è riportato un esempio in cui un oggetto di tipo Type è stato utilizzato laddove era previsto un tipo effettivo (caso 4):
// CS0246b.cs
using System;
class C
{
public bool supports(object o, Type t)
{
if (o is t) // CS0246 – t is not a type
{
return true;
}
return false;
}
public static void Main()
{
}
}
Cronologia delle modifiche
Date |
History |
Motivo |
|---|---|---|
|
Luglio 2008 |
Added possible cause for the error. |
Miglioramento delle informazioni. |