Copiando il valore del parametro 'ByRef' '<nomeparametro>' nell'argomento corrispondente viene eseguita la conversione dal tipo '<nometipo1>' a '<nometipo2>', più piccolo

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

Routine in Visual Basic

Parametri e argomenti delle routine

Passaggio di argomenti per valore e per riferimento

Routine di operatore

Conversioni di ampliamento e restrizione

Riferimenti

Istruzione Operator

Altre risorse

Conversioni di tipi in Visual Basic