|
■No65148 (MassyPie さん) に返信
> −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
> 上記は、ArrayをInt()に設定する方法ですが、Int()をArrayにByVal方式で設定するには、どのような書き方をすればよいのでしょうか?
> よろしくお願い致します。
> −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
ArrayからInteger()へキャストすればいいだけです。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim a As Array = {1, 2, 3}
Dim b() As Integer = {4, 5, 6}
Console.WriteLine("a(0) = {0}", CType(a, Integer())(0))
Console.WriteLine("b(0) = {0}", b(0))
Console.WriteLine("Castでインスタンスは変わらない {0}", a Is CType(a, Integer()))
ArraySet(a)
Console.WriteLine("After ArraySet(a) a(0) = {0}", CType(a, Integer())(0))
ArraySet(b)
Console.WriteLine("After ArraySet(b) b(0) = {0}", b(0))
IntArraySet(CType(a, Integer()))
Console.WriteLine("After IntArraySet(a) a(0) = {0}", CType(a, Integer())(0))
IntArraySet(b)
Console.WriteLine("After IntArraySet(b) b(0) = {0}", b(0))
End Sub
Private Sub ArraySet(ByVal ary As Array)
CType(ary, Integer())(0) = 11
End Sub
Private Sub IntArraySet(ByVal ary() As Integer)
ary(0) = 14
End Sub
MassyPie さんの
> intInt(i) = A_Int(i + 1)
A_int As Array
だとするとこれは遅延バインディングを利用しているのでコンパイルオプション
によってはエラーとなりますので気を付けて下さい。
遅延バインディングを使用しない書き方だと上記コードのように
intInt(i) = CType(A_int,Integer())(i + 1)
のように書く必要があります。
CTypeはDirectCastと書いても大丈夫です。その方がパフォーマンスはよくなります。
|