22

Visual Studio で VB.Net プロジェクトに新しいファイルを追加すると、「クラス」と「モジュール」の両方のオプションが与えられます。クラスは次のように記述されます

An empty class file

モジュールは次のように記述されますが、

A file for storing groups of functions

クラスは関数のグループなどを格納できるため、これはモジュールがクラスほど有用ではないことを暗示しているようです。

モジュールは単に関数のグループであるということですか、それともビジュアル スタジオのドキュメントが示唆する以上のものがモジュールにあるのでしょうか?

4

5 に答える 5

22

クラスは型です。この型を他の型 ( StringIntegerDateFileInfo...) と同様に使用して、変数、パラメーター、プロパティ、および関数の戻り値の型を宣言できます。

少し例を挙げてみましょう:

Public Class Person
    Public Property FirstName As String
    Public Property LastName As String

    Public Overridable Sub Print() 'I will explain Overridable later.
        Console.WriteLine($"{FirstName} {LastName}")
    End Sub
End Class

タイプの変数を宣言できるようになりましたPerson

Dim sue, pete As Person
Dim persons As List(Of Person)

sue = New Person()
sue.FirstName = "Susan"
sue.LastName = "Miller"

pete = New Person()
pete.FirstName = "Peter"
pete.LastName = "Smith"

persons = new List(Of Person)()
persons.Add(sue)
persons.Add(pete)

For Each person As Person In persons
    person.Print()
Next

モジュールは静的ですがつまり、モジュールに格納されたデータは 1 回だけ存在します。一方、モジュールを でインスタンス化する必要はないNewため、グローバル データの格納やグローバルに使用可能なメソッドによく使用されます。たとえば、人のリストをモジュールに保存できます。


しかし、クラスでできることは他にもたくさんあります。基本クラスからクラスを派生させることができます。この新しいクラスは基本クラスからすべてを継承し、さらに多くのものを追加できます。たとえば、Employeeからクラスを派生させることができますPerson

Public Class Employee
    Inherits Person

    Public Property Salary As Decimal

    Public Overrides Sub Print
        Console.WriteLine($"{FirstName} {LastName}, Salary = {Salary}")
    End Sub
End Class

Overridableキーワード in を使用すると、Person.Print派生クラスでメソッドを再定義 (オーバーライド) できますPrint。(クラス内の関数とサブはメソッドと呼ばれます。)

従業員は個人と互換性のある割り当てです。リストに従業員を追加できpersonsます。これには、For Each ループを変更する必要はありません。つまり、 の呼び出しによりperson.Print()、適切なメソッドが自動的に呼び出されますPrint(最初のメソッドは「通常の」個人用、2 番目のメソッドは従業員用)。

Dim emp as Employee

emp = New Employee()
emp.FirstName = "Frank"
emp.LastName = "Taggart"
emp.Salary = 3500.00D

persons.Add(emp)

クラスについては、もっと多くのことが言えます。クラスで何ができるかについて、ある程度のアイデアが得られたことを願っています。

Visual Basic のオブジェクトとクラス、特に「クラスとモジュールの違い」セクションを参照してください。

于 2013-01-27T16:35:44.137 に答える
10

クラスはより多くのユニットであり、モジュールは本質的に関数、変数、さらにはクラスのようなものの緩いコレクションです。

パブリックモジュールでは、プロジェクト内のクラスがモジュールの関数と変数にアクセスできます。モジュール名を指定してアドレス指定する必要はありません。モジュールにクラスを含めることもできます。

クラスの変数と関数は、クラスによるより厳密な「所有権」の下にあります。他のクラスで使用されるパブリック変数と関数(メソッド)はclassname.method、モジュールの場合とは異なり、クラス名:で使用されます。

モジュールのインスタンスは1つだけですが、クラスの1つ以上のインスタンスを一度に使用できます。

于 2013-01-27T15:52:36.483 に答える
4

クラスとモジュールの主な違いは、クラスはオブジェクトとしてインスタンス化できますが、標準モジュールはインスタンス化できないことです。標準モジュールのデータのコピーは 1 つしかないため、プログラムの一部が標準モジュールのパブリック変数を変更すると、プログラムの他の部分がその変数を読み取ると、同じ値が取得されます。対照的に、オブジェクト データは、インスタンス化されたオブジェクトごとに個別に存在します。もう 1 つの違いは、標準モジュールとは異なり、クラスはインターフェイスを実装できることです。

ソース: http://msdn.microsoft.com/en-us/library/7825002w(en-US,VS.80).aspx

于 2013-01-27T15:54:08.087 に答える