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

博客主要讲述用VB6写的COM方法在C#中调用的情况。当使用Option Base 1时,在C#中调用该方法只能通过Array来cast,特定转换会失败;而使用Option Base 0则无此问题,表明Option base 1兼容性不佳。
653

被折叠的 条评论
为什么被折叠?



