C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: Class内構造体から同クラスの非共有変数を参照したい


(過去ログ 115 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■67899 / inTopicNo.1)  Class内構造体から同クラスの非共有変数を参照したい
  
□投稿者/ L'Kbreth (1回)-(2013/09/09(Mon) 10:44:17)

分類:[.NET 全般] 

はじめまして。 
VB6を少しかじってVB2010を勉強中の初心者です。

下のコードで 構造体【TasuStructure.myCalc()、KakeruStructure\myCalc()】から 
Class1 の 非共有メンバ 変数 _X  と 変数_Y を参照したいのですが矢印の箇所で、
「非共有メンバを参照するには、オブジェクト参照が必要です。」
とエラーが表示されます。

Shared を記述すると参照はできたのですが、myCal1とmyCal2 の値が同じになるのでダメでした。
また、MyCalc に引数として x と y を値渡しすれば思ったような動作はできるのですが
何故同じクラスの _X _Y を構造体内で参照できないか分かりません。

どのように記述すれば参照できますか?

宜しくお願いします。

========================================================

Public Class Form1

    Private myCal1 As Class1
    Private myCal2 As Class1

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim ans As Integer

        With myCal1
            ans = .Tasu.MyCalc
            MsgBox(CStr(ans))

            ans = .Kakeru.MyCalc
            MsgBox(CStr(ans))

        End With

        With myCal2
            ans = .Tasu.MyCalc
            MsgBox(CStr(ans))

            ans = .Kakeru.MyCalc
            MsgBox(CStr(ans))
        End With

    End Sub

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

        myCal1 = New Class1
        myCal2 = New Class1

        myCal1._X = 2
        myCal1._Y = 3

        myCal2._X = 0
        myCal2._Y = 0

    End Sub

End Class

Public Class Class1

    Public _X As Integer
    Public _Y As Integer

    Public Tasu As TasuStructure
    Public Kakeru As KakeruStructure

    Public Structure TasuStructure

        Public Function MyCalc() As Integer

            Return _X + _Y	' ←非共有エラー

        End Function

    End Structure

    Public Structure KakeruStructure

        Public Function MyCalc() As Integer

            Return _X * _Y ' ←非共有エラー

        End Function

    End Structure

End Class

========================================================



引用返信 編集キー/
■67900 / inTopicNo.2)  Re[1]: Class内構造体から同クラスの非共有変数を参照したい
□投稿者/ shu (388回)-(2013/09/09(Mon) 10:59:01)
No67899 (L'Kbreth さん) に返信
> 「非共有メンバを参照するには、オブジェクト参照が必要です。」
> とエラーが表示されます。
このエラーの通りClass1のインスタンスを渡す必要があります。

TasuStructureはClass1.TasuStructureという型の構造体ではありますが
Class1のインスタンスへのアクセスは提示コードのような方法では出来ません。

やりたいことがわかりませんが
提示コードのButton1_Clickに記述されている程度なら

Public Tasu As TasuStructure

Public Structure TasuStructure〜End Structure
の部分を

Public Function Tasu() as Integer
    Return _X + _Y
End Function

で記述されればよいと思います。Kakeruも同様。

引用返信 編集キー/
■67901 / inTopicNo.3)  Re[2]: Class内構造体から同クラスの非共有変数を参照したい
□投稿者/ L'Kbreth (3回)-(2013/09/09(Mon) 11:10:44)
Shu さん、ご返信ありがとうございます。

Public Class Class1
Public _X As Integer
Public _Y As Integer

 Public Function Tasu() as Integer
  Return _X + _Y
 End Function

 Public Function Kakeru() as Integer
  Return _X * _Y
 End Function
End Class

で参照できる事は確認済みでした。
すみません記述不足でした。

同じクラスの変数なのでクラス内の構造体からでも参照できないものかと探しておりましたが、
でできないようなので値渡しにします。

ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -