1

以下の機能をご覧ください。

Public Function Test(ByVal i As Integer) As Animal
        If i = 1 Then
            Return New Dog
        Else
            Return New Cat
        End If

    End Function

整数の値が 1 であるかどうかに応じて、関数によって犬または猫が返されます。Dog と Cat が静的クラスである場合、これはどのようにアプローチされますか? つまり、静的クラスのインスタンスを作成することはできません。今日の午後、MSDN Web サイトで静的クラスについて説明している Web ページをいくつか読みましたが、特定の質問に対する回答が見つかりませんでした。

4

2 に答える 2

0

「静的クラス」という用語はC#の概念であり、VB.NETには存在しません。したがって、これは不可能です。

C#でも不可能であり、静的クラスはObjectからのみ派生できます。静的クラスに相当する最も近いVB.NETはModuleです。まったく不適切です。

確かに、クラスの静的インスタンスを返すことができます。モジュール内で変数を宣言するか、クラス内で宣言する場合はSharedキーワードを使用します。

Class Example 
    Private Shared theDog As Dog
    Private Shared theCat As Cat

    Public Shared Function Test(ByVal i As Integer) As Animal
        If i = 1 Then Return theDog Else Return theCat
    End Function
End Class
于 2013-01-14T20:03:15.573 に答える
0

Dog と Cat が静的クラスである場合、これはどのようにアプローチされますか?

これは違います。「静的クラスを返す」ことはできません。常にオブジェクトを返す必要があります。クラスで静的/共有メソッドを使用して、オブジェクトを生成または操作できます。たとえば、型にファクトリ作成メソッドがある場合、次のようにすることができます。

Public Function Test(ByVal i As Integer) As Animal
    If i = 1 Then
        Return Dog.Create(i)
    Else
        Return Cat.Create(i)
    End If

End Function
于 2013-01-14T19:58:59.100 に答える