0

OK、それで私はちょうどvbを学び始めて、私が理解できないこのことに出くわすまでいくつかの実験をしました

だから私は2つのモジュールを持つコンソールアプリケーションを持っています

Module1.vb(プログラムはこれから開始します)

Module Module1

    Sub Main()
        add.addone()
        add.addone()
        add.addone()
        Console.Read()
    End Sub

End Module

add.vb

Public Module add
    Private counter As Integer

    Public Sub addone()
        counter += 1
        Console.Write(counter)
    End Sub
End Module

私はそれがコンソールに次のパターンを印刷することを期待しています:

1 1 1

なぜ印刷されるのですか

1 2 3

add.addone()が呼び出された後、私が理解しているのは、これを尋ねているからです。変数(カウンター)はもう存在しないはずです!したがって、add.addone()が2回呼び出されると、空白になり、1が再度出力されます。

あなたが私を助けてくれることを願っています。私は何を間違っているのですか、そしてなぜこれが起こっているのですか?

ありがとう、Vidhu

4

2 に答える 2

1

add.addone()が呼び出された後。変数(カウンター)はもう存在しないはずです!

なぜそうなるのでしょうか?の外側、周囲のモジュールでcounter宣言されます。したがって、もちろん、メソッドが終了した後も存在し続けます。addoneadd

(ちなみに、モジュールとメソッドの.NET PascalCase命名規則に従う必要があります…)

于 2012-10-06T23:06:15.893 に答える
1

これは、変数カウンターがクラス内ではなくモジュール内で宣言されているために発生します。
プログラムがモジュール内のパブリック変数を変更すると、プログラムの他の部分は同じ値を取得します。すべてのインスタンスが内部変数の独自のコピーを持っているClassの場合のように、モジュールのインスタンスを作成することはできません。

モジュールとクラスを参照してください

于 2012-10-06T23:09:15.073 に答える