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

わんくま同盟

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

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

■91942 / 18階層)  C++からVBへの変換
□投稿者/ 魔界の仮面弁士 (2299回)-(2019/08/12(Mon) 17:33:28)
No91939 (えんえん さん) に返信
> できれば、最終回答をお教えいただけないでしょうか?
> 恐らく、こうやって何度もやりとりするよりも
> 効率的だと思うのですが・・・

申し訳ありませんが、現状は言語文法的な側面からしか回答できません。

自分は高速フーリエ変換について正確に理解しているわけではないため、
「作成依頼」に近い「質問」をされても、デバッグすることができないためです。


実引数としてどういう値を入れた時に、なんという結果が返されるのか示す、
ブラックボックステストのための情報があるわけでも無いですし。



> もし、出力引数がなければ、
> 再帰処理の意味がなくなってしまうと思うのですが・・・

今回は ByVal で十分でしょう。

改めて、 No91906 の最後の個所にあるコードで説明してみます。
今回は意図的に ByVal を付けておきます。

  Sub Test4_Modify(ByVal a As ArraySegment(Of Double))
    a.Array(a.Offset + 1) *= 10
  End Sub

このコードは「ByVal a As ArraySegment(Of T)」という宣言になっていますが、
呼び出し元の値は、きちんと 10 倍になっています。


・ArraySegment(Of T) 構造体は値型。

・T が値型であれ参照型であれ、配列 T() は列は常に「参照型」。

・a.Array プロパティが返す型は As T() なので「参照型」。

・a.Array プロパティは ReadOnly であり、書き換えられない。
 たとえば「a.Array = Nothing」などと書くことはできない。

・a.Array プロパティから返される「一次元配列」は、
 ReadOnly というわけではないので、その要素を書き換えることができる。
 たとえば「a.Array(0) = Nothing」や「a(1) *= 10」と書いても良い。



==== 入力引数の例 <In> === ※いずれも ByVal で書いている。

 Sub Method1(ByVal x() As Integer)
   x(0) = 100 ' 呼び出し元の実引数では、配列の先頭要素が 100 に替わる。ただし、配列そのものが指しかわるわけでは無い。
 End Sub

 Sub Method2(ByVal lbl As Label)
   lbl.Text = CStr(Now) ' 呼び出し元で指定した Label のテキストが変化する。ただし、Label 型変数が別のラベルを指し示すわけでは無い。
 End Sub

 Sub Method3(ByVal pt As Point)
   Console.WriteLine("{0}, {1}", pt.X, pt.Y)
 End Sub


==== 出力引数の例 <Out> === ※いずれも ByRef で書いている。

 Sub Method4(ByRef x() As Integer)
   x = New Integer() { 0, 1, 2, 3 } ' 呼び出し元が渡した変数の内容は、新しい配列の参照へと差し替わる。
 End Sub

 Sub Method5(ByRef f As Form)
   f = New Form2() ' 呼び出し元が渡した変数の内容は、Form2 への参照へと書き換わる。
 End Sub

 Sub Method6(ByRef i As Integer)
   i = 12345 ' 呼び出し元が渡した変数の内容は、12345 という値に書き換わる。
 End Sub

 Sub Method7(ByRef pt As Point)
   pt = New Point(-1, 1) ' 呼び出し元が渡した変数の内容は、座標 (-1, 1) という値に置き換わる。
 End Sub


==== 入出力引数の例 <In, Out> === ※いずれも ByRef でなければならない。

 Sub Method8(ByRef x As Integer)
   x += 1
 End Sub

 Sub Method9(ByRef pt As Point)
   pt.Offset(-1, 1)
 End Sub

 Function Method10(ByVal x As Point) As Point
   pt.Offset(-1, 1)
   Return pt
 End Sub
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[17]: C++からVBへの変換 /えんえん 返信無し
 
上記関連ツリー

C++からVBへの変換 / えんえん (19/08/08(Thu) 22:51) #91899
Re[1]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/08(Thu) 23:48) #91900
  └ Re[2]: C++からVBへの変換 / えんえん (19/08/09(Fri) 10:36) #91905
    └ Re[3]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/09(Fri) 12:18) #91906
      └ Re[4]: C++からVBへの変換 / えんえん (19/08/09(Fri) 12:28) #91907
        └ Re[5]: C++からVBへの変換 / Hongliang (19/08/09(Fri) 12:46) #91908
          └ Re[6]: C++からVBへの変換 / ぶなっぷ (19/08/09(Fri) 13:05) #91909
            └ Re[7]: C++からVBへの変換 / えんえん (19/08/09(Fri) 13:12) #91910
              ├ Re[8]: C++からVBへの変換 / Hongliang (19/08/09(Fri) 13:18) #91911
              │└ Re[9]: C++からVBへの変換 / えんえん (19/08/09(Fri) 13:23) #91912
              │  └ Re[10]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/09(Fri) 17:42) #91917
              └ Re[8]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/09(Fri) 13:54) #91913
                └ Re[9]: C++からVBへの変換 / えんえん (19/08/10(Sat) 07:13) #91924
                  └ Re[10]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/10(Sat) 09:41) #91925
                    └ Re[11]: C++からVBへの変換 / えんえん (19/08/10(Sat) 10:16) #91927
                      └ Re[12]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/10(Sat) 14:19) #91930
                        └ Re[13]: C++からVBへの変換 / 774RR (19/08/10(Sat) 15:02) #91932
                          ├ Re[14]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/10(Sat) 16:23) #91933
                          │└ Re[15]: C++からVBへの変換 / えんえん (19/08/11(Sun) 21:42) #91934
                          │  └ Re[16]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/12(Mon) 12:05) #91938
                          │    ├ Re[17]: C++からVBへの変換 / えんえん (19/08/12(Mon) 14:12) #91939
                          │    │├ Re[18]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/12(Mon) 16:25) #91940
                          │    │├ C++からVBへの変換 / 魔界の仮面弁士 (19/08/12(Mon) 17:33) #91942 ←Now
                          │    │└ Re[18]: C++からVBへの変換 / 774RR (19/08/12(Mon) 16:56) #91941
                          │    └ Re[17]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/13(Tue) 01:00) #91946
                          └ Re[14]: C++からVBへの変換 / 魔界の仮面弁士 (19/08/12(Mon) 22:51) #91944
                            └ Re[15]: C++からVBへの変換 / えんえん (19/08/13(Tue) 11:01) #91947

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信