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

わんくま同盟

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

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


(過去ログ 104 を表示中)
■61884 / )  Re[2]: 引数に配列を使う場合のByValとByRefについて
□投稿者/ kei (11回)-(2011/09/09(Fri) 22:44:54)
shuさん、Hongliangさん、ありがとうございます。

今読んでいる本は、技術評論社の川西朝雄著のVB.NET基礎学習BIBLEという本で
247ページ目に配列データはByRefによる参照渡しで行う、と書かれていました。

お二人が書かれたサンプルを実行してみると、確かにその通りの結果になったのですが
自分で試したコードと結果が違いました。

Private Sub FuncVal(ByVal a As Integer())
a(0) = 10
a(1) = 20
End Sub

Private Sub FuncRef(ByRef a As Integer())
a(0) = 50
a(1) = 60
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim a(1) As Integer

a(0) = 1
a(1) = 2

FuncVal(a)
System.Diagnostics.Debug.Print(a(0))
System.Diagnostics.Debug.Print(a(1))

    FuncRef(a)
System.Diagnostics.Debug.Print(a(0))
System.Diagnostics.Debug.Print(a(1))
End Sub

このようなコードを書いたのですが、結果は

10
20
50
60

このような結果になりました。ByRef、ByValもどちらも同じような動きをしました。
a(1)などでインデックスまで指定している場合はこのような動きになるのでしょうか?

shuさん、Hongliangさんのコードだと、ByValで渡したときは影響は無かったのですが私のと
明らかに動作が違うように思われます。
私のコードのどこに違いがあるのでしょうか。
返信 編集キー/


管理者用

- Child Tree -