假设用 VB6 写的COM有这样的一个方法。
Option Base 1
Public Function GetOrders() As Variant
Dim v As Variant
ReDim v(5)
Dim i As Integer
For i = 1 To 5
v(i) = "Order " & Rnd() * 300
Next
GetOrders = v
End Function
到 C# 中调用的话, 只能通过Array 来cast。
BllLib.BLLOrdersClass c=new BllLib.BLLOrdersClass();
//Object [] o=(Object [])c.GetOrders();
System.Array arr=(Array)c.GetOrders();
object [] kk=(object [])c.GetOrders() ; // 这个转换会失败的。
如果 Option Base 0 则没有类似的问题。
看来 Option base 1 确实兼容性不好 :(