次の方法で共有


型 '<型名 1>' は型 '<型名 2>' に変換できないため、'ByRef' パラメーター '<パラメーター名>' の値を、一致する引数に戻してコピーすることはできません

プロシージャが、呼び出し元の引数の型に変換できないパラメーター型を使用して宣言されています。

クラスまたは構造体を定義するときは、そのクラスまたは構造体の型を他の型に変換する 1 つまたは複数の変換演算子を定義できます。 その他の型をクラスまたは構造体の型に変換する逆の変換演算子を定義することもできます。 プロシージャ呼び出しでクラスまたは構造体の型を使用すると、Visual Basic ではこれらの変換演算子を使用して、引数の型を、対応するパラメーターの型に変換できます。

引数 ByRef を渡した場合、Visual Basic では参照を渡す代わりに、引数の値をプロシージャのローカル変数にコピーすることがあります。 このような場合は、プロシージャから戻るときに、Visual Basic で呼び出し元のコードの引数にローカル変数の値をコピーする必要があります。

ByRef 引数の値がプロシージャにコピーされ、引数とパラメーターが同じ型である場合、変換は必要ありません。 型が異なる場合、Visual Basic では双方向で変換する必要があります。 型のいずれかがクラスまたは構造体の型の場合、Visual Basic ではその型を他の型との間で変換する必要があります。 つまり、双方向の変換演算子を定義する必要があります。

エラー ID: BC33037

このエラーを解決するには

  • 可能な場合は、プロシージャのパラメーターと同じ型の呼び出し元の引数を使用して、Visual Basic で変換する必要がないようにします。

  • パラメーター型とは異なる引数型を使用してプロシージャを呼び出す必要があり、呼び出し元の引数に値を返す必要がない場合は、 ByRef ではなく ByRefになるようにパラメーターを定義します。

  • 呼び出し元の引数に値を返す必要がある場合は、Visual Basic が呼び出し元の引数の型に変換できるように、逆の変換演算子を定義します。

関連項目