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: novembre 2007
Messaggio di errore
I vincoli per i metodi di override e implementazione di interfacce esplicite sono ereditati dal metodo base, pertanto non possono essere specificati in maniera diretta.
Constraints for override and explicit interface implementation methods are inherited from the base method, so they cannot be specified directly
Quando un metodo generico incluso in una classe derivata esegue l'override di un metodo nella classe base, non è possibile definire vincoli sul metodo sottoposto a override. Il metodo di override nella classe derivata eredita infatti i vincoli dal metodo nella classe base.
Esempio
Il seguente codice di esempio genera l'errore CS0460.
// CS0460.cs
// compile with: /target:library
class BaseClass
{
BaseClass() { }
}
interface I
{
void F1<T>() where T : BaseClass;
void F2<T>() where T : struct;
void F3<T>() where T : BaseClass;
}
class ExpImpl : I
{
void I.F1<T>() where T : BaseClass {} // CS0460
void I.F2<T>() where T : class {} // CS0460
}