トップ回答者
配列を引数に宣言するときの方法

質問
-
VB6では、
読み出し元 : If DenTpnWrite(IpToriKBN,DelKBN,IpDate,IpAiteCD1,IpDenNo1,PrTpnID(),PrTpnGyo(),PrTpnBCD())=FAIL Then
読み出し先 : Private Function DenTpnWrite(ToriKBN,DelKBN,DenDate,AiteCD,DenNo,PrTpn(),PrTpnGyo(),PrTpnBCD()) As Long
Global PrTpnID(MAXTPN - 1)
Global PrTpnGyo(MAXTPN - 1)
Global PrTpnBCD(MAXTPN - 1)
上記のように使用でると思うのでですが、VB.Net(下記)ではうまくいきません。.NETは初心者なので、どのように書けばよいか伝授お願いします。
読み出し元 : If DenTpnWrite(IpToriKBN, IpDel, IpDate1, IpAiteCD1, IpDenNo1, PrTpnID, PrTpnGyo, PrTpnBCD)=FAIL Then
読み出し先 : Private Function DenTpnWrite(ByRef ToriKBN As String, ByRef DelKBN As Integer, ByRef DenDate As String, ByRef AiteCD As String, ByRef DenNo As Integer, _
ByRef PrTpnID() As String, ByRef PrTpnGyo() As Integer, ByRef PrTpnBCD() As String) As LongPublic PrTpnID(MAXTPN - 1) As String
Public PrTpnGyo(MAXTPN - 1) As Integer
Public PrTpnBCD(MAXTPN - 1) As String下線部のところの書き方がわかりません(あっているでしょうか?)
回答
-
文法的には合っています。ただ、ByRefの代わりにByValを使って、ByVal PrTpnGyo() As Integer, ByVal PrTpnBCD() As Stringと書くこともできます。この場合、読み出し元の引数と読み出し先の引数は別物になりますので注意して下さい。(ByRefの場合は、同じ物を指すことになります)
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク 京太郎 2011年5月13日 5:46
すべての返信
-
文法的には合っています。ただ、ByRefの代わりにByValを使って、ByVal PrTpnGyo() As Integer, ByVal PrTpnBCD() As Stringと書くこともできます。この場合、読み出し元の引数と読み出し先の引数は別物になりますので注意して下さい。(ByRefの場合は、同じ物を指すことになります)
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク 京太郎 2011年5月13日 5:46
-
付ける必要はありません。わかりやすい記事を見つけましたのでご紹介しておきます。
3-6 基本的なメソッド定義と呼び出し
http://msdn.microsoft.com/ja-jp/library/dd314348.aspxの、「3-6-5 値型の引数と参照型の引数」をご覧下さい。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/ -
別解として、ParamArray キーワードを使う方法もあります。
方法 : 不特定数のパラメータを受け取るプロシージャを呼び出す
Blog:プログラマーな日々 http://d.hatena.ne.jp/JHashimoto/