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
Copying the value of 'ByRef' parameter '<parametername>' back to the matching argument narrows from type '<typename1>' to type '<typename2>'
Una routine viene chiamata con un argomento che viene convertito nel tipo di parametro corrispondente più grande, mentre la conversione dal parametro all'argomento è verso un tipo di dati più piccolo.
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. Se una di queste conversioni è verso un tipo di dati più grande, la conversione inversa è verso un tipo di dati più piccolo.
ID errore: BC32053
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 che venga restituito un valore nell'argomento di chiamata, definire l'operatore di conversione inversa come Conversione verso un tipo di dati più grande, se possibile.
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
Conversioni di ampliamento e restrizione