- 題名: クラス内の変数に別クラスから設定、それを別クラスから取り出す。
- 日時: 2013/05/20 0:59:39
- ID: 31552
- この記事の返信元:
- (なし)
- この記事への返信:
- [31553] Re[1]: クラス内の変数に別クラスから設定、それを別クラスから取り出す。2013/05/20 7:17:02
- ツリーを表示
質問内容からすると、クラスやオブジェクト(インスタンス)に関して知識が不足しているように見受けられます。 まずはこちらの内容に目を通してみてください。 http://dobon.net/vb/dotnet/beginner/classinstance.html ■No31552に返信(アンヌさんの記事) > ログイン時にユーザーIDをLoginUserクラス内の変数に格納し、 > それをまた別のクラスで利用したいのですが、上手くいきません。 Login クラスと hogehoge クラスで別々のオブジェクトを生成しています。 これらは関係のないオブジェクト(別の箱とも言える)ので、 Login クラスで設定した内容は hogehoge クラスと共有されません。 さて、オブジェクトを共有するためには二つ戦略が考えられます。 (1)一つのオブジェクトを何らかの手段で伝達すること。 例(コンパイルは試していないのでエラーになる可能性があります) Sub Main() Dim loginUser As New LoginUser Dim login As New Login(loginUser) Dim hoge As New hogehoge(loginUser) End Sub このコードでは一カ所で LoginUser クラスのオブジェクトを作り、 Login クラスと hogehoge クラスに同じものとして渡しています。 それぞれのクラスではコンストラクタ(Sub New)で引数を受け取り、 フィールド変数に代入します。 Private loginUser As LoginUser Sub New(ByVal loginUserParam As LoginUser) loginUser = loginUserParam End Sub 各クラスはこの loginUser フィールド変数で参照するようにします。 (2)静的なフィールド変数を使って、参照できるようにする。 アプリケーションで唯一のオブジェクトとして問題ない場合に限りますが、 シングルトンという考え方が使える可能性があります。 http://ja.wikipedia.org/wiki/Singleton_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3 こちらのサンプルは省略しますが、Shared キーワードをつければ全オブジェクト共通の変数になります。 ----- 蛇足になりますが、カプセル化などオブジェクト指向の考え方も 学んでみるとよいかもしれません。 知った上で使わないと判断するのと、知らないとでは大きな差が後で出てくるためです。 ご参考までに。 http://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96
分類:[.NET]
お世話になっております。VB2008です。
ログイン機能のあるシステムを作っているのですが、
ログイン時にユーザーIDをLoginUserクラス内の変数に格納し、
それをまた別のクラスで利用したいのですが、上手くいきません。
いろいろ調べてみたのですが、いま一つ理解できません。
どのようにすればいいのでしょうか?
以下LoginUserクラス
Public Class LoginUser
Public UserID As String ' ログインユーザID
Public Sub LoginUserData()
UserID = ""
End Sub
End Class
Login時に以下のように読み込んで
Public Class Login
Dim user As LoginUser = New LoginUserData()
userData._UserID = "hogehoge"
End Class
hogehogeクラスで利用しようと思います。
Public Class hogehoge
Dim userData As New LoginUserData
MsgBox(userDate.UserID)
End Class