クラスの戻り値を取得するには?

解決


.net初心者  2006-03-12 09:01:39  No: 94545

下記のように、フォームおよびクラスに記述し、クラスからの戻り値を確認しましたが、
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


あなたは  2006-03-12 13:04:14  No: 94546

人に聞くレベルではありません。
入門書を読むことおお勧めします。


名無し  2006-03-12 14:19:07  No: 94547

javaかCと間違えてない?


.  2006-03-12 22:45:47  No: 94548

>javaかCと間違えてない?
  そう思われ。でも一応ツッこんでおく。

  ※何がしたいのか理解できないので予想して回答。

>Botton2はobjCalc.cのように指定をすると戻り値を取得可能
  クラス内のメンバ変数に代入して、それを計算しているいるだけなのでエラーが出るはずない。結果の値をメンバー変数cに代入しているだけなので戻り値とはいわない。

Button1では、クラス(class1)のcalcを呼び出しているけど、calcに戻り値はないので何も起こるはずはない。

VBで関数の宣言には Sub ではなく Function を使用する。引数のリストの後ろに 「As データ型」のように指定すると戻り値の型を指定できる。

そして関数内で値を返すには  「Return データ」と書く。データの部分は変数でもなんでもいい。

Button1でのように引数で受け取った変数等を操作するには  ByVal  ではなく ByRef  句を引数に用いる。ByRefは引数に受け取った変数のポインタを保持するので直接値を操作可能。
  とにかく自分で試してみること。

「あなたは」さんの言うとおり入門書を読んだりサイトを見たりして勉強するのがお勧め。


.net初心者  2006-03-12 23:59:56  No: 94549

.様
ご丁寧にありがとうございました。大体わかりました。
もう少し勉強します。


.net初心者  2006-03-13 00:00:18  No: 94550

解決


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加