- 締切済み
【VB2005】クラスを使用する時は、必ずしも「new」を付ける必要はない?
23歳男性です。 vb.netについて質問があります。 私は、「クラスを使用するときは必ず「new」をつけてインスタンス化しないとできない」と思っていました。(Shared以外) しかし!! DBに接続するとき、「SqlDataReader」クラスを使用するんですが、このクラスは「new」を使いません。 正確には、「使えません」。newを付けると、怒られちゃいます。 このことから、クラスを使うときは必ずしも「new」を使用しなくてもいいという考えにたどり着いたのですが、どうしてこのようなことが起こるのでしょうか? 説明できる方がいましたらご教授お願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ainax
- ベストアンサー率45% (5/11)
7行目訂正です。Shared付け忘れでした。しかもFunctionでした。 7: Public Shared Function GetInstance() As Singleton 引用では、自分自身のインスタンスを返してますけどSqlDataReaderでは SqlCommandのExecuteReaderでSqlDataReaderのインスタンスを作成して返してませんか?
- ainax
- ベストアンサー率45% (5/11)
シングルトンというデザインパターンのようなものではないかと思います。 参考URLからの引用です。 1: Public Class Singleton 2: Private Shared _Singleton As Singleton = New Singleton() 3: 4: Private Sub New() 5: End Sub 6: 7: Public Sub GetInstance() As Singleton 8: Return _Singleton 9: End Sub 10:End Class 4行目でコンストラクタはプライベートなので外部アクセス不可(外部からNewできない)。 7行目で常に同じインスタンスを返す。