2017-10-31 87 views
1

私はvb.netで作業していますが、割り当てられていない参照変数に対して上記の警告が表示されます。変数にNothingを割り当てると、警告が消えます。今私の質問は、どのような違いを割り当てることですNothing値は参照変数になりますか?明示的にNothingを指定しない場合でも、デフォルト値はNothingだけですね。もし私が間違っていれば私を修正してください警告:変数は、値が割り当てられる前に参照渡しされます。実行時にnull参照例外が発生する可能性があります。

PS:これは、変数に値が割り当てられていない場合、そのデータ型の既定値を保持します。参照データ型の場合、既定値はNothingです。ここに完全なリンクがあります:https://docs.microsoft.com/en-us/dotnet/visual-basic/misc/bc42030

+0

これは値を割り当てたことを意味し、コンパイラは値を割り当てたかどうかを確認しても警告を生成しません。よくやった。あなたは警告を消して、あなたが入るのを止めるのを助けようとしていた問題を防ぐために何もしなかった。よかったね。 – TZHX

+0

サンプルコードは表示されませんが、関数が呼び出し元に渡す必要のあるパラメータへの代入を行う場合は、ByRefとしての関数パラメータの定義は*のみ*行う必要があることを指摘しておきます。プログラマは、変数がオブジェクトへの参照であるため、パラメータがByRefでなければならないと多くの初心者プログラマが想定しています。それは間違っている。 – dwilliss

答えて

2

これは警告であり、エラーではありません。特にコードに間違いがないため、エラーではありません。 ByRefのパラメータを使用してメソッド間でデータを渡すため、その変数を引数として渡す前に値として代入するのを忘れた場合は、パラメータに値があると仮定するとNullReferenceExceptionがスローされることがあります。変数をNothingに明示的に設定すると、変数をNothingにすることをコンパイラに指示しているだけでなく、他の値を割り当てるのを忘れたことだけではありません。

関連する問題