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.
Errori e avvisi correlati ai metodi di estensione dichiarati con
-
CS1100: Il metodo ha un modificatore di parametro '
this
' che non è nel primo parametro -
CS1101: il modificatore di parametro '
ref
' non può essere usato con 'this
'. -
CS1102: il modificatore di parametro '
out
' non può essere usato con 'this
'. - CS1103: il primo parametro di un metodo di estensione non può essere di un tipo puntatore.
- CS1105: i metodi di estensione devono essere statici.
- CS1106: i metodi di estensione devono essere definiti in una classe statica non generica.
- CS1109: i metodi di estensione devono essere definiti nelle classi statiche di primo livello, 'name' è una classe annidata.
- CS1110: impossibile definire una nuova estensione perché non è possibile trovare il tipo ExtensionAttribute richiesto dal compilatore. Manca un riferimento a System.Core.dll?
-
CS1112: non usare 'ExtensionAttribute'. Usare invece la parola chiave '
this
'. - CS1113: il metodo di estensione definito in un tipo valore non può essere usato per creare delegati.
- CS1743: impossibile specificare un valore predefinito per il parametro 'this'.
- CS9281: le dichiarazioni di estensione potrebbero non avere un nome.
- CS9282: le dichiarazioni di estensione possono includere solo metodi o proprietà.
- CS9283: le estensioni devono essere dichiarate in una classe statica non generica di primo livello.
- CS9284: il parametro ricevitore di un'estensione non può avere un valore predefinito.
- CS9285: un contenitore di estensioni può avere un solo parametro ricevitore.
- CS9287: un parametro ricevitore non può avere lo stesso nome di un parametro di tipo contenitore di estensione.
- CS9288: un parametro, una variabile locale o una funzione locale non può avere lo stesso nome di un parametro di tipo contenitore di estensione.
- CS9289: il parametro tipo di membro ha lo stesso nome di un parametro di tipo contenitore di estensione.
- CS9290: un parametro, una variabile locale o una funzione locale non può avere lo stesso nome di un parametro di estensione.
-
CS9291: '
value
': un nome di parametro generato automaticamente è in conflitto con un nome di parametro di estensione. - CS9292: un parametro di tipo ha lo stesso nome di un parametro di estensione.
- CS9293: impossibile usare un parametro di estensione in questo contesto.
-
CS9294: '
value
': un nome di parametro generato automaticamente è in conflitto con un nome di parametro del tipo di estensione. - CS9295: il tipo esteso deve fare riferimento a tutti i parametri di tipo dichiarati dall'estensione, ma non viene fatto riferimento a un parametro di tipo.
-
CS9300: il parametro ricevitore '
ref
' di un blocco di estensione deve essere un tipo valore o un tipo generico vincolato allo struct. -
CS9301: il parametro ricevitore '
in
' o 'ref readonly
' dell'estensione deve essere un tipo di valore concreto (non generico). - CS9302: nuovo membro protetto dichiarato in un blocco di estensione.
- CS9303: impossibile dichiarare i membri dell'istanza in un blocco di estensione con un parametro ricevitore senza nome.
- CS9304: impossibile dichiarare funzioni di accesso init-only in un blocco di estensione.
- CS9305: non è possibile usare modificatori nel parametro ricevitore senza nome del blocco di estensione.
Errori comuni nelle dichiarazioni di estensione
Il compilatore genera questi errori quando si violano le regole applicabili a tutte le dichiarazioni dei membri di estensione, indipendentemente dalla sintassi scelta:
-
CS1102: il modificatore di parametro '
out
' non può essere usato con 'this
'. - CS1106: i metodi di estensione devono essere definiti in una classe statica non generica.
- CS1103: il primo parametro di un metodo di estensione non può essere di un tipo puntatore.
- CS1109: i metodi di estensione devono essere definiti nelle classi statiche di primo livello, 'name' è una classe annidata.
- CS1113: il metodo di estensione definito in un tipo valore non può essere usato per creare delegati.
- CS1743: impossibile specificare un valore predefinito per il parametro 'this'.
- CS9283: le estensioni devono essere dichiarate in una classe statica non generica di primo livello.
- CS9284: il parametro ricevitore di un'estensione non può avere un valore predefinito.
- CS9285: un contenitore di estensioni può avere un solo parametro ricevitore.
Qualsiasi dichiarazione di estensione deve seguire queste regole:
- Il tipo contenitore (
class
ostruct
) deve essere non generico estatic
. - Il tipo che lo contiene deve essere un tipo di primo livello. Non può essere annidata in un altro tipo.
- I membri che estendono un'istanza di un tipo di valore non possono essere convertiti in delegati.
- Il parametro ricevitore non può includere il modificatore di
out
parametro. - Il parametro receiver non può avere un valore di argomento predefinito.
- Non è possibile estendere i tipi di puntatore. In altre parole, il parametro a cui si applica il
this
modificatore non può essere un tipo di puntatore.
Errori relativi alle dichiarazioni dei blocchi di estensione
Questi errori sono specifici dei blocchi di estensione, una funzionalità C# 14. I blocchi di estensione vengono dichiarati usando la extension
parola chiave in una classe statica.
extension
Dichiara il tipo e il nome del ricevitore. Tutti i membri all'interno del blocco dichiarato con extension
sono membri di estensione per tale ricevitore:
- CS9281: le dichiarazioni di estensione potrebbero non avere un nome.
- CS9282: le dichiarazioni di estensione possono includere solo metodi o proprietà.
- CS9287: un parametro ricevitore non può avere lo stesso nome di un parametro di tipo contenitore di estensione.
- CS9288: un parametro, una variabile locale o una funzione locale non può avere lo stesso nome di un parametro di tipo contenitore di estensione.
- CS9289: il parametro tipo di membro ha lo stesso nome di un parametro di tipo contenitore di estensione.
- CS9290: un parametro, una variabile locale o una funzione locale non può avere lo stesso nome di un parametro di estensione.
-
CS9291: '
value
': un nome di parametro generato automaticamente è in conflitto con un nome di parametro di estensione. - CS9292: un parametro di tipo ha lo stesso nome di un parametro di estensione.
- CS9293: impossibile usare un parametro di estensione in questo contesto.
-
CS9294: '
value
': un nome di parametro generato automaticamente è in conflitto con un nome di parametro del tipo di estensione. - CS9295: il tipo esteso deve fare riferimento a tutti i parametri di tipo dichiarati dall'estensione, ma non viene fatto riferimento a un parametro di tipo.
-
CS9300: il parametro ricevitore '
ref
' di un blocco di estensione deve essere un tipo valore o un tipo generico vincolato allo struct. -
CS9301: il parametro ricevitore '
in
' o 'ref readonly
' dell'estensione deve essere un tipo di valore concreto (non generico). - CS9302: nuovo membro protetto dichiarato in un blocco di estensione.
- CS9303: impossibile dichiarare i membri dell'istanza in un blocco di estensione con un parametro ricevitore senza nome.
- CS9304: impossibile dichiarare funzioni di accesso init-only in un blocco di estensione.
- CS9305: non è possibile usare modificatori sul parametro ricevitore senza nome del blocco di estensione.
Le dichiarazioni di estensione devono seguire queste regole:
- L'estensione non può includere un token del nome. L'estensione dichiara unicamente il ricevitore.
- Il parametro ricevitore non può avere un valore predefinito.
I membri dell'estensione dichiarati in un blocco di estensione devono seguire queste regole, oltre alle regole comuni:
- Solo i metodi e le proprietà sono tipi di membri di estensione validi. I membri dell'estensione possono estendere un'istanza o un tipo.
- L'estensione deve fornire un nome di parametro per il ricevitore, affinché possa contenere membri che estendono un'istanza.
- Il nome del parametro del ricevitore deve essere univoco in tale blocco di estensione.
- Tutti i membri dell'estensione devono usare tutti i parametri di tipo dichiarati nell'estensione. Possono aggiungere altri parametri di tipo.
Errori correlati ai metodi di estensione dei this
parametri
Questi errori sono specifici dei metodi di estensione in cui si dichiara il ricevitore aggiungendo il this
modificatore al primo parametro del metodo :
-
CS1100: Il metodo ha un modificatore di parametro '
this
' che non è nel primo parametro -
CS1101: il modificatore di parametro '
ref
' non può essere usato con 'this
'. - CS1105: i metodi di estensione devono essere statici.
- CS1110: impossibile definire una nuova estensione perché non è possibile trovare il tipo ExtensionAttribute richiesto dal compilatore. Manca un riferimento a System.Core.dll?
-
CS1112: non usare 'ExtensionAttribute'. Usare invece la parola chiave '
this
'.
Un metodo di estensione in cui l'istanza del ricevitore include il this
modificatore deve seguire queste regole, oltre alle regole comuni:
- Il metodo deve avere il
static
modificatore. - Il
this
modificatore di parametro deve essere applicato al primo parametro. Non può essere applicato ad altri parametri nel metodo . - Il
ref
out
modificatore di parametro non può essere applicato al primo parametro. Per applicareref
, è necessario convertire in un blocco di estensione. - Nelle app .NET Framework,
System.Core.dll
deve essere aggiunto come riferimento. - È necessario specificare il
this
modificatore nel primo parametro. Non è invece possibile usare direttamente l'attributo ExtensionAttribute .