Il tipo di valore facoltativo per il parametro facoltativo <nomeparametro> non è compatibile con CLS

Aggiornamento: novembre 2007

Type of optional value for optional parameter <parametername> is not CLS-compliant

In una routine contrassegnata come <CLSCompliant(True)> viene dichiarato un parametro Optional (Visual Basic) con valore predefinito di tipo non compatibile.

Per essere compatibile con CLS (Specifiche CLS (Common Language Specification)), è necessario che la routine utilizzi solo tipi compatibili con CLS. Quanto descritto vale per i tipi dei parametri, per il tipo di valore restituito e per i tipi di tutte le variabili locali. Quanto descritto vale anche per i valori predefiniti dei parametri facoltativi.

I seguenti tipi di dati Visual Basic non sono compatibili con CLS:

Quando l'attributo CLSCompliantAttribute viene applicato a un elemento di programmazione, il parametro isCompliant dell'attributo viene impostato su True o False per indicare la compatibilità o la non compatibilità. L'impostazione predefinita per questo parametro non è disponibile, è necessario quindi specificare un valore.

Se a un elemento non viene applicato CLSCompliantAttribute, l'elemento non sarà considerato compatibile.

Per impostazione predefinita, si tratta di un messaggio di avviso. Per informazioni su come nascondere gli avvisi o considerarli come errori, vedere Configurazione degli avvisi in Visual Basic.

ID errore: BC40042

Per correggere l'errore

  • Per assegnare al parametro facoltativo un valore predefinito di tipo particolare, rimuovere CLSCompliantAttribute. La routine non può essere compatibile con CLS.

  • Per rendere la routine compatibile con CLS, modificare il tipo del valore predefinito nel tipo compatibile più prossimo. Anziché UInteger, ad esempio, potrebbe essere possibile utilizzare Integer se non si necessita dell'intervallo di valori superiore a 2.147.483.647. Se l'intervallo esteso non è necessario, è possibile sostituire UInteger con Long.

  • Nel caso in cui si debba interagire con oggetti COM o di automazione, è necessario tenere conto che alcuni tipi possono presentare un'ampiezza di dati diversa rispetto a .NET Framework. int, ad esempio, in altri ambienti è spesso rappresentato con 16 bit. Se si accetta un valore integer a 16 bit da un componente di questo tipo, è necessario eseguirne la dichiarazione come Short anziché come Integer nel codice gestito Visual Basic.

Vedere anche

Concetti

Scrittura di codice compatibile con CLS