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
Cannot copy the value of 'ByRef' parameter '<parametername>' back to the matching argument because type '<typename1>' cannot be converted to type '<typename2>'
Una routine è stata dichiarata con un tipo di parametro che non è possibile convertire nuovamente nel tipo di argomento chiamante.
Quando viene definita una classe o struttura, è possibile definire uno o più operatori di conversione per convertire quel tipo di classe o struttura in altri tipi. È inoltre possibile definire operatori di conversione inversa per riconvertire gli altri tipi nel tipo di classe o struttura di origine. Quando si utilizza il tipo di classe o struttura in una chiamata di routine, Visual Basic può utilizzare questi operatori di conversione per convertire il tipo di un argomento nel tipo del parametro corrispondente.
Se si passa l'argomento ByRef, talvolta Visual Basic copia il valore dell'argomento in una variabile locale nella routine anziché passare un riferimento. In tal caso, al ritorno della routine Visual Basic deve ricopiare il valore della variabile locale nell'argomento del codice chiamante.
Se il valore di un argomento ByRef viene copiato nella routine e l'argomento e il parametro sono dello stesso tipo, non è necessario effettuare alcuna conversione, ma se i tipi sono diversi, Visual Basic deve effettuare una conversione in entrambe le direzioni. Se uno dei tipi corrisponde al tipo della classe o struttura, Visual Basic deve convertirlo da e verso l'altro tipo. Questo comporta la necessità di definire gli operatori di conversione in entrambe le direzioni.
ID errore: BC33037
Per correggere l'errore
Se possibile, utilizzare un argomento di chiamata dello stesso tipo del parametro di routine in modo che Visual Basic non debba effettuare alcuna conversione.
Se è necessario chiamare la routine con un tipo di argomento diverso dal tipo di parametro ma non è necessario che venga restituito un valore nell'argomento di chiamata, definire il parametro come ByVal anziché ByRef.
Se è necessario ottenere un valore nell'argomento di chiamata, definire l'operatore di conversione inversa in modo che in Visual Basic sia possibile eseguire nuovamente la conversione nel tipo di argomento di chiamata.
Vedere anche
Attività
Procedura: definire un operatore
Procedura: definire un operatore di conversione
Concetti
Parametri e argomenti delle routine
Passaggio di argomenti per valore e per riferimento