DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Finalizeの使い方おしえてください

環境/言語:[Windows2000 VB.NET]
分類:[.NET]

たびたびお世話にナッテマス。かずです。

VB.NETのWindowsアプリケーション作成してます。

IO.StreamReaderの配列をクリア(デストラクタ)したいのですが、
Finalizeメソッドの使い方がよくわかりません。
HELP等を読んだのですが、どうもぴんとこなくて・・・。

どなたか教えてください!
おねがいします!
> IO.StreamReaderの配列をクリア(デストラクタ)したいのですが、

StreamReaderの配列って何ですか?
クリアすることとデストラクタ(デストラクタが実行されるようにしたいという意味?)
は意味が違ってきますけど、何をしたいのでしょうか?

> Finalizeメソッドの使い方がよくわかりません。

Finalizeメソッドはガベージコレクションによって呼ばれるメソッドですので、
コードから呼び出すことはありません。
インスタンスが持つリソースを破棄したい場合は一般にDiposeメソッドを呼び出します。
StreamReaderではCloseメソッドがストリームを閉じるとともに内部リソースを解放する役目を持っています。
しかし、Closeメソッドで閉じた後はこのStreamReaderのインスタンスはもう使用できませんので、
何をかよくわかりませんが、「クリア」するということとは意味が違うかと思います。

もしかして、StreamReaderの読み出し位置を前や先頭に移動したいということですか?
そういうことであれば、StreamReaderに渡したStreamクラスのSeekメソッドを使用します。
無知ですみません(>_<)

したいことは、
For文の中で宣言している配列の中身を空にして次に回したいのです。

ってことは、Diposeメソッドを使用するってことですか・・・?
> したいことは、
> For文の中で宣言している配列の中身を空にして次に回したいのです。

Dim i As Integer
For i = 0 To 10
Dim myArray() As String
myArray = New String(4){} ' 毎回初期化

' 何らかの処理
Next

1.上記コードのように配列のインスタンスを常に作成する
2.配列の個々の要素を一つ一つ初期化する
3.配列に値を設定する際にすべての要素に何らかの値を設定する(すべての要素に何らかの値を設定するので、初期化しておく必要は特にない)

以上の3つのやり方が考えられます。

> ってことは、Diposeメソッドを使用するってことですか・・・?

配列を初期化するだけなら、何のメソッドも関係ありません。
なるほど!
難しく考えすぎていたようです。

毎回初期化するやり方でうまくいきました!

どうもありがとうございますm(__)m
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板