- ベストアンサー
textBox isNot Nothing とは
textBox isNot Nothing とは どういうことですか わかりやすく教えてください あるサイトに以下のコードが書かれていました ここにある If cTextBox IsNot Nothing Then とはどういうことを意味しているのでしょうか If cTextBox IsNot Nothing Then MessageBox.Show(cTextBox.Name & " の Text を変更しました") End If
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#1 です。 #2 の方が書かれている通りなのですが、御質問の例に沿って「オブジェクトを指していない時の具体例」を補足します。 変数 cTextBox に Nothing が入っている状態というのは、以下のパターンのいずれかになると考えられます。 1.変数 cTextBox が宣言だけされていて、実体が作成されていない状態。 Dim cTextBox As TextBox となっているだけの時。 この後、「If cTextBox IsNot Nothing Then」の行に到達する前に、 cTextBox = New TextBox() 等とコーディングされておれば、オブジェクト実体を作って変数 cTextBox に参照させている事になりますので、メッセージボックスが正しく表示されます。 2.cTextBox を使い終わって Nothing を入れた後。 cTextBox = Nothing と書いた後です。このように記載すると、cTextBox はオブジェクトの実体との参照を切断します。 以下蛇足ですが、#2の方が書かれているように事前に Dispose を呼び出すのがセオリーです。 cTextBox.Dispose() cTextBox = Nothing 但しフォームの子供として正しくこの TextBox を追加している場合には、Dispose する必要はありません(フォームが閉じられた時に自動で呼ばれます)。
その他の回答 (2)
- MARU4812
- ベストアンサー率43% (196/452)
参照変数の仕組みは、どの入門本でも最初の方に書いてある 基礎知識だと思いますが。 http://msdn.microsoft.com/ja-jp/library/dd314344.aspx > 参照型のデータでは値型とは異なり、その変数を宣言した > からといって、そのデータ型にみあう領域が確保される訳 > ではありません。 参照変数はメモリ上のインスタンスのアドレスを格納 します。参照するまではアドレスを格納できる入れ物を 用意したに過ぎません。 つまり中身は空です。それを Nothing で表します。 通常は画面のテキストボックスなどは、デザイン時に 貼り付けたらそのままですので、意識する必要は無い でしょう。(VBが裏で自動でプログラムを書いています) しかし、自分で動的にコントロールを増減させたり する時は、処理対象のオブジェクトがまだメモリ上に 存在しない場合も出てくるでしょう。その場合は、 まだどこも参照していないので Nothing になります。 まぁ、もっと使うのがフォームでしょうね。複数画面を 扱うアプリでは、各画面を新しくロードしたり、破棄 したりを頻繁に行いますので。 ただし、アドレス参照はしているが、アドレスの先の インスタンスは破棄した状態もありえます。 その場合は Control.IsDisposed プロパティもあわせて チェックします。 http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.isdisposed(v=VS.100).aspx
cTextBox がちゃんと実際のオブジェクト(変数名から推定して TextBox 型のオブジェクト)を指しているかどうかを確認しています。 実際のオブジェクトを指していない場合には、オブジェクトのプロパティにアクセスしようとしてエラーになってしまうので(cTextBox.Name の部分でエラーが発生してしまうので)。 実際のオブジェクトを指している事が明らかな場合には、不要な条件式ですね。
お礼
ご回答ありがとうございます。 よくわからないのですが実際のオブジェクトを指していないとは 具体的にどのような時のことをさすのでしょうか textboxがenableにプログラムによって変更されたとか なのでしょうか よくわかりませんもしよろしかったらオブジェクトを指していないときの 具体例を教えていただけませんでしょうか お忙しい中ご回答いただきありがとうござました。