VB.NET に C#.NET の out に相当するものは、残念ながら存在しない。
VB.NET だけなら ByRef を使用していればいいのだが(使用するしかない)、VB.NET で作成した ByRef 引数を持つメソッドを C#.NET から呼ぶ場合、ref / out が区別できないと不便である。(ByRef のみでは ref に相当する)
これを解決する方法として、OutAttribute がある。
ただし、この属性は、C#.NET から呼ぶ場合に out として扱えるだけで、VB.NET に out 機能を提供するわけではないことに注意。
あくまで VB.NET は、ref = ByRef のみ。
VB.NET だけなら ByRef を使用していればいいのだが(使用するしかない)、VB.NET で作成した ByRef 引数を持つメソッドを C#.NET から呼ぶ場合、ref / out が区別できないと不便である。(ByRef のみでは ref に相当する)
これを解決する方法として、OutAttribute がある。
' C# から呼ぶ場合、引数"ret"は ref として扱える。
Public Shared Function AddRef(ByVal x As String, ByVal y As String,
ByRef ret As Integer) As Boolean
Dim xi, yi As Integer
If Integer.TryParse(x, xi) AndAlso Integer.TryParse(y, yi) Then
ret = xi + yi
Return True
End If
Return False
End Function
' C# から呼ぶ場合、引数"ret"は out として扱える。
Public Shared Function AddOut(ByVal x As String, ByVal y As String,
<Out()> ByRef ret As Integer) As Boolean
Dim xi, yi As Integer
If Integer.TryParse(x, xi) AndAlso Integer.TryParse(y, yi) Then
ret = xi + yi
Return True
End If
Return False
End Function
ただし、この属性は、C#.NET から呼ぶ場合に out として扱えるだけで、VB.NET に out 機能を提供するわけではないことに注意。
あくまで VB.NET は、ref = ByRef のみ。
0 件のコメント:
コメントを投稿