本来想出第二个Visual Basic Quiz,结果问题出来以后自己也不会做,真是faint了。

在C#中,ref型的参数总是需要加“ref”来传递,因此,函数的两个重载版本可以仅通过ref或没有ref的不同来区分。比如有如下两个函数的重载版本:

public void Test(int x)
{
    Console.WriteLine("By Value");
}

public void Test(ref int x)
{
    Console.WriteLine("By Reference");
}

在C#中调用可以通过Test(i)或Test(ref i)这样的语法来区分。但是在Visual Basic中,ByRef和ByVal是不用(也不允许)在传递参数的时候指定的,那么问题就是:如果C#写了这样的函数放在Dll里,在Visual Basic中应该如何调用正确的版本呢?

我进行了很多实验,比如用后期绑定啦、VBBinder搜索合适匹配重载项啦……都无济于事,在VB中无法调用这两个重载版本中的任意一个。于是Quiz就变成Problem了,怎么才能解决它呢?