変数 '<variablename>' は、値が割り当てられる前に参照によって渡されています。(構造体の変数)

更新 : 2007 年 11 月

エラー メッセージ

変数 '<variablename>' は、値が割り当てられる前に参照によって渡されています。Null 参照の例外が実行時に発生する可能性があります。構造体、またはすべての参照メンバが使用前に初期化されていることを確認してください。

値が代入されていない構造体変数が、プロシージャ呼び出しによって引数として ByRef パラメータに渡されています。

構造体変数に値が代入されない場合、構造体の各メンバにはそのデータ型の既定値が格納されます。参照データ型の既定値は、Nothing (Visual Basic) です。値が Nothing の参照メンバを読み取ると、状況によっては NullReferenceException が発生します。

ByRef でプロシージャに引数を渡した場合、引数の基になる変数はプロシージャで変更できます。

既定では、このメッセージは警告です。警告を表示しない方法や、警告をエラーとして扱う方法の詳細については、Visual Basic での警告の構成 を参照してください。

Error ID: BC42108

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

  • プロシージャで ByRef の引数をとおして構造体メンバに値を代入する場合に、メンバに既に値が格納されているかどうかが問題にならない場合は、アクションは必要ありません。

  • 値を代入する前に構造体メンバを読み取るロジックがプロシージャ内にあり、そのメンバが値型である場合、プロシージャのロジックが、メンバに既定値が含まれるかどうかに依存しないことを確認してください。

  • 値を代入する前に構造体メンバを読み取るロジックがプロシージャ内にあり、そのメンバが参照型である場合、プロシージャのロジックが Nothing の値を扱えることを確認してください。たとえば、Try...Catch...Finally ステートメント (Visual Basic) を使って NullReferenceException をキャッチできます。

参照

処理手順

Visual Basic における変数のトラブルシューティング

概念

値型と参照型

引数の値渡しおよび参照渡し

Visual Basic での変数宣言

参照

Dim ステートメント (Visual Basic)

ByRef

Structure ステートメント

その他の技術情報

構造体 : 独自のデータ型