假设用 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 确实兼容性不好 :( 
|