下記のように、フォームおよびクラスに記述し、クラスからの戻り値を確認しましたが、
Botton1ではクラスの戻り値が取得不可
Botton2ではクラスの戻り値が取得不可
となりました。
すなわち
Botton1は通常の関数のように戻り値を取得したがこれが不可
Botton2はobjCalc.cのように指定をすると戻り値を取得可能
となりました。
Botton1のように通常の関数のやりかたがでクラス内の関数の戻り値を取得することはできないのでしょうか?
ご教示ください。
*** フォームの記述 ***
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As Double = 1
Dim b As Double = 3
Dim c As Double
Dim objCalc As New Class1
Call objCalc.calc(a, b, c)
MsgBox(a & "," & b & "," & c)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim objCalc As New Class1
objCalc.a = 1
objCalc.b = 2
Call objCalc.calc2()
MsgBox(objCalc.a & "," & objCalc.b & "," & objCalc.c)
End Sub
End Class
*** クラスの記述 ***
Public Class Class1
Public a
Public b
public c
Public Sub calc(ByVal a As Double, ByVal b As Double, ByVal c As Double)
c = a + b
End Sub
Public Sub calc2()
c = a + b
End Sub
End Class
人に聞くレベルではありません。
入門書を読むことおお勧めします。
javaかCと間違えてない?
>javaかCと間違えてない?
そう思われ。でも一応ツッこんでおく。
※何がしたいのか理解できないので予想して回答。
>Botton2はobjCalc.cのように指定をすると戻り値を取得可能
クラス内のメンバ変数に代入して、それを計算しているいるだけなのでエラーが出るはずない。結果の値をメンバー変数cに代入しているだけなので戻り値とはいわない。
Button1では、クラス(class1)のcalcを呼び出しているけど、calcに戻り値はないので何も起こるはずはない。
VBで関数の宣言には Sub ではなく Function を使用する。引数のリストの後ろに 「As データ型」のように指定すると戻り値の型を指定できる。
そして関数内で値を返すには 「Return データ」と書く。データの部分は変数でもなんでもいい。
Button1でのように引数で受け取った変数等を操作するには ByVal ではなく ByRef 句を引数に用いる。ByRefは引数に受け取った変数のポインタを保持するので直接値を操作可能。
とにかく自分で試してみること。
「あなたは」さんの言うとおり入門書を読んだりサイトを見たりして勉強するのがお勧め。
.様
ご丁寧にありがとうございました。大体わかりました。
もう少し勉強します。
解決
ツイート | ![]() |