DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Function関数への引数の渡し方について

環境/言語:[.NET 2003]
分類:[.NET]

FITOです。こんにちは。
単純かもしれないですが、宜しくお願いいたします。

●Function関数への引数の渡し方で質問があります。
●どうすれば呼び出し元でも、セットされたデータが残りますか?

Dim CsvStr As String
Dim CsvData() As String

と定義した変数があります。
これらを利用し、

Private Function GetCsvStr(ByVal CsvStr As String, ByVal CsvData() As String)As Integer

というFunction関数を呼び出し、処理としては
ReDim CsvData(256)
CsvData(0) = "ABC"
CsvData(1) = "DEF"
などと処理を行い、最後に
GetCsvStr=3とintの数字を入れてリターンしています。

呼び出し側では、
i_ret = GetCsvStr(CsvStr, CsvData)
という形なのですが、

返却されたCsvDataやi_retが空なのです。リターンされる直前まではデバッガで確認しても
中身はセットされているのですが。。

単純な引数の渡し方がVB.NETではそれ以前と大きく異なるのでしょうか?
以上、宜しくお願いいたします。
こんにちは、じゃんぬねっと です。

■No9270に返信(FITOさんの記事)
> ●Function関数への引数の渡し方で質問があります。
> ●どうすれば呼び出し元でも、セットされたデータが残りますか?

普通に使えば、大丈夫です。

それとも、ByRef キーワードについての質問でしょうか?
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcn7/html/vaconargumentpassingbyreference.asp

> 返却されたCsvDataやi_retが空なのです。

CsvData が空なのは当たり前ですが、i_ret が空なのは謎ですね。

# 添削したソースでの説明は、大変ありがたいのですが、
# この場合は呼び出し元と、呼び出し側のコード一式が欲しいですね。
■No9270に返信(FITOさんの記事)

こんにちは 平ちゃんです。

> 返却されたCsvDataやi_retが空なのです。リターンされる直前まではデバッガで

Integer 型変数 i_ret を空という表現は適切でないと思います。
ここは表現が適切かどうかじゃなくって、何を望んでいたのに、どうなっていたか。
抜粋のしすぎなので、もう少しその近辺が見たいということに尽きるかと。
> 単純な引数の渡し方がVB.NETではそれ以前と大きく異なるのでしょうか?

VB 6.0以前では、引数の渡し方は”デフォルト”でByRef(参照渡し)でした。
一方VB.NETでは”デフォルト”がByVal(値渡し)になっています。
#今回は指定してあるようなので、関係ないですが…。
FITOです。

皆様ありがとうございました。解決です。
ちなみに戻り値i_retはちゃんと入ってました。。単純ミスでした。

また宜しくお願いいたします。。。。
(なるべく変な単純な質問はしないようにするです。。)

■No9283に返信(antさんの記事)
>>単純な引数の渡し方がVB.NETではそれ以前と大きく異なるのでしょうか?
>
> VB 6.0以前では、引数の渡し方は”デフォルト”でByRef(参照渡し)でした。
> 一方VB.NETでは”デフォルト”がByVal(値渡し)になっています。
> #今回は指定してあるようなので、関係ないですが…。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板