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.
Questo articolo illustra gli errori del compilatore seguenti:
- CS0243: l'attributo Conditional non è valido in 'method' perché è un metodo di override.
- CS0404: l'attributo non è valido in questo tipo di dichiarazione.
- CS0415: questo attributo è valido solo in un indicizzatore che non è una dichiarazione esplicita del membro dell'interfaccia.
- CS0416: 'type parameter': un argomento attributo non può usare parametri di tipo.
- CS0447: l'attributo non può essere usato con argomenti di tipo.
- CS0577: l'attributo Conditional non è valido perché è un costruttore, un distruttore, un operatore, un'espressione lambda o un'implementazione esplicita dell'interfaccia.
- CS0578: l'attributo Conditional non è valido per 'function' perché il tipo restituito non è void.
- CS0582: l'attributo Condizionale non è valido nei membri dell'interfaccia.
- CS0609: impossibile impostare l'attributo su un indicizzatore contrassegnato come override.
- CS0625: il campo dell'istanza nei tipi contrassegnati con StructLayout(LayoutKind.Explicit) deve avere un attributo FieldOffset.
- CS0629: il membro condizionale 'member' non può implementare il membro dell'interfaccia 'membro della classe base' nel tipo 'Type Name'.
- CS0636: l'attributo FieldOffset può essere inserito solo su membri di tipi contrassegnati con StructLayout(LayoutKind.Explicit).
- CS0637: l'attributo FieldOffset non è consentito nei campi statici o const.
- CS0641: questo attributo è valido solo nelle classi derivate da System.Attribute'.
- CS0646: impossibile specificare l'attributo DefaultMember in un tipo contenente un indicizzatore.
- CS0653: impossibile applicare la classe di attributi 'class' perché è astratta.
- CS0657: location non è un percorso di attributo valido per questa dichiarazione. Sono elencati i percorsi di attributo validi per questa dichiarazione. Tutti gli attributi in questo blocco verranno ignorati.
- CS0658: la posizione non è una posizione dell'attributo riconosciuta. Sono elencati i percorsi di attributo validi per questa dichiarazione. Tutti gli attributi in questo blocco verranno ignorati.
- CS0685: il membro condizionale 'member' non può avere un parametro out.
- CS7014: gli attributi non sono validi in questo contesto.
- CS7046: è necessario specificare il parametro attribute.
- CS7047: è necessario specificare il parametro di attributo 'parameter1' o 'parameter2'.
- CS7067: il parametro del costruttore dell'attributo è facoltativo, ma non è stato specificato alcun valore di parametro predefinito.
- CS9331: l'attributo non può essere applicato manualmente.
Argomenti e parametri degli attributi
Gli errori seguenti si verificano quando si usano argomenti di attributo o parametri in modo non corretto:
- CS0416: 'tipo di parametro': un argomento di attributo non può utilizzare parametri di tipo.
- CS0447: l'attributo non può essere usato con argomenti di tipo.
- CS7046: è necessario specificare il parametro attribute.
- CS7047: è necessario specificare il parametro di attributo 'parameter1' o 'parameter2'.
- CS7067: il parametro del costruttore dell'attributo è facoltativo, ma non è stato specificato alcun valore di parametro predefinito.
Per correggere questi errori, seguire queste regole.
- Usare i valori costanti in fase di compilazione per gli argomenti dell'attributo anziché i parametri di tipo (CS0416). Gli argomenti degli attributi devono essere valutati in fase di compilazione.
- Non usare argomenti di tipo con attributi (CS0447). Gli argomenti di tipo non sono consentiti nell'utilizzo degli attributi.
- Specificare tutti i parametri di attributo necessari quando si applica l'attributo (CS7046, CS7047). Controllare il costruttore dell'attributo per verificare quali parametri sono obbligatori.
- Specificare i valori predefiniti per i parametri del costruttore facoltativi quando si definiscono attributi personalizzati (CS7067). Usare la sintassi
parameterType parameterName = defaultValuenel costruttore dell'attributo.
Per altre informazioni, vedere Attributi e generics.
Annotazioni
CS0447 non viene più usato in Roslyn.
Requisiti delle classi degli attributi
Gli errori seguenti si verificano quando si definiscono classi di attributi che non soddisfano i vincoli richiesti:
- CS0404: l'attributo non è valido in questo tipo di dichiarazione.
- CS0641: questo attributo è valido solo nelle classi derivate da System.Attribute'.
- CS0653: impossibile applicare la classe di attributi 'class' perché è astratta.
Per correggere questi errori, seguire queste regole.
- Applicare attributi solo a tipi di dichiarazione validi (CS0404). Controllare l'attributo
AttributeUsageper verificare quali destinazioni sono consentite. - Rimuovere il
abstractmodificatore dalle classi di attributi o derivare da una classe di attributi non astratta (CS0653). Gli attributi devono essere creabili tramite un'istanza. - Si applica AttributeUsageAttribute solo alle classi che derivano da
Attribute(CS0641). Questo attributo controlla la modalità di utilizzo di altri attributi.
Per altre informazioni, vedere Creare attributi personalizzati.
Contesto della posizione dell'attributo
Gli errori seguenti si verificano quando si applicano attributi in posizioni non valide o con identificatori di destinazione non corretti:
- CS0657: location non è un percorso di attributo valido per questa dichiarazione. Sono elencati i percorsi di attributo validi per questa dichiarazione. Tutti gli attributi in questo blocco verranno ignorati.
- CS0658: la posizione non è una posizione dell'attributo riconosciuta. Sono elencati i percorsi di attributo validi per questa dichiarazione. Tutti gli attributi in questo blocco verranno ignorati.
- CS7014: gli attributi non sono validi in questo contesto.
Per correggere questi errori, seguire queste regole. Per altre informazioni, vedere Destinazioni degli attributi.
- Usare identificatori di destinazione di attributi validi per la dichiarazione (CS0657). Controllare il messaggio di errore per visualizzare le destinazioni valide per la dichiarazione specifica.
- Rimuovere identificatori di destinazione dell'attributo non validi (CS0658). Gli identificatori validi includono
assembly:,module:type:,method:,property:,field:,event:,param:ereturn:. - Spostare gli attributi in contesti validi (CS7014). Gli attributi possono essere applicati solo agli elementi del programma che li supportano, come definito da AttributeUsageAttribute.
- Applicare attributi a livello di ambito appropriato. Usare i
assembly:omodule:prefissi per gli attributi a livello di assembly o a livello di modulo.
Attributi predefiniti
Gli errori seguenti si verificano quando si usano attributi .NET predefiniti specifici in modo non corretto:
- CS0415: questo attributo è valido solo in un indicizzatore che non è una dichiarazione esplicita del membro dell'interfaccia.
- CS0609: impossibile impostare l'attributo su un indicizzatore contrassegnato come override.
- CS0625: il campo dell'istanza nei tipi contrassegnati con StructLayout(LayoutKind.Explicit) deve avere un attributo FieldOffset.
- CS0636: l'attributo FieldOffset può essere inserito solo su membri di tipi contrassegnati con StructLayout(LayoutKind.Explicit).
- CS0637: l'attributo FieldOffset non è consentito nei campi statici o const.
- CS0646: impossibile specificare l'attributo DefaultMember in un tipo contenente un indicizzatore.
- CS9331: l'attributo non può essere applicato manualmente.
Per correggere questi errori, seguire queste regole. Per altre informazioni, vedere Indicizzatori e Platform Invoke (P/Invoke).
- Rimuovere IndexerNameAttribute dalle implementazioni esplicite dell'interfaccia (CS0415). Applicarlo solo agli indicizzatori pubblici.
- Rimuovere
IndexerNamedagli indicizzatori contrassegnati conoverride(CS0609). Gli indicizzatori di override ereditano il nome dalla classe di base. - Aggiungi FieldOffsetAttribute a tutti i campi di istanza nei tipi con StructLayoutAttribute impostato su
LayoutKind.Explicit(CS0625). Il layout esplicito richiede posizioni di campo esplicite. - Applica
FieldOffsetsolo ai tipi che dispongono diStructLayout(LayoutKind.Explicit)(CS0636). Aggiungere l'attributoStructLayoutalla dichiarazione di tipo. - Rimuovere
FieldOffsetdastaticoconstcampi (CS0637). Il layout esplicito si applica solo ai campi dell'istanza. - Rimuovere DefaultMemberAttribute dai tipi che contengono indicizzatori (CS0646). Gli indicizzatori definiscono automaticamente il membro predefinito.
- Sostituire gli attributi generati dal compilatore con la sintassi C# equivalente (CS9331). Usare parole chiave del linguaggio invece di applicare manualmente gli attributi riservati.
Utilizzo degli attributi condizionali
Gli errori seguenti si verificano quando si applica il ConditionalAttribute in modi che violano le limitazioni d'uso.
- CS0243: l'attributo Conditional non è valido in 'method' perché è un metodo di override.
- CS0577: l'attributo Conditional non è valido perché è un costruttore, un distruttore, un operatore, un'espressione lambda o un'implementazione esplicita dell'interfaccia.
- CS0578: l'attributo Conditional non è valido per 'function' perché il tipo restituito non è void.
- CS0582: l'attributo Condizionale non è valido nei membri dell'interfaccia.
- CS0629: il membro condizionale 'member' non può implementare il membro dell'interfaccia 'membro della classe base' nel tipo 'Type Name'.
- CS0685: il membro condizionale 'member' non può avere un parametro out.
Per correggere questi errori, seguire queste regole. Per altre informazioni, vedere ConditionalAttributee Attributi.
- Rimuovere l'attributo
Conditionaldai metodi di override o rimuovere laoverrideparola chiave (CS0243). Il compilatore viene associato al metodo di base, non all'override. - Non si applicano
Conditionala costruttori, finalizzatori, operatori, espressioni lambda o implementazioni esplicite dell'interfaccia (CS0577). Questi tipi di membri non supportano la compilazione condizionale. - Modificare il tipo restituito del metodo in
voido rimuovere l'attributoConditional(CS0578). I metodi condizionali devono restituirevoidperché le chiamate potrebbero essere omesse durante la compilazione. - Rimuovere l'attributo dalle dichiarazioni dei membri dell'interfaccia
Conditional(CS0582). I membri dell'interfaccia non possono essere condizionali. - Rimuovere l'attributo dalle implementazioni dei membri dell'interfaccia
Conditional(CS0629). I metodi che implementano i membri dell'interfaccia non possono essere condizionali. - Rimuovere
outi parametri dai metodi condizionali o rimuovere l'attributoConditional(CS0685). Il valore dellaoutvariabile non sarà definito quando la chiamata al metodo viene compilata.