4

我有一个关于 C# 代码的有趣问题。基本上我必须调用一个方法

BCI2000AutomationLib.IBCI2000Remote.StartupModules(ref System.Array)

使用 Visual Studio 2010,以下代码可以完美编译并运行:

// Startup modules
string[] modules = new string[3];
modules[0] = "SignalGenerator --local";
modules[1] = "DummySignalProcessing --local";
modules[2] = "DummyApplication --local";
ok_conn = bci.StartupModules(ref modules);

现在将其移植到游戏引擎(例如 Unity 3D)需要一些更严格的 C# 代码,因为它使用 Mono C# 编译器。因此,对于相同的代码,我得到以下编译错误:

'BCI2000AutomationLib.IBCI2000Remote.StartupModules(ref System.Array)'的最佳重载方法匹配 有一些无效参数 参数 1:无法从 'ref string[]' 转换为 'ref System.Array'

您能否就如何将此代码块重写为更严格的编码以解决所述错误提供建议?

4

2 回答 2

4

将变量的类型更改为 System.Array

// Startup modules 
Array modules = new string[3] 
{
    "SignalGenerator --local",
    "DummySignalProcessing --local",
    "DummyApplication --local"
};
ok_conn = bci.StartupModules(ref modules); 

您的方法 StartupModules 将 ref Array 作为参数;它可以将变量设置为任何其他数组。不一定是字符串数组,可以是 int[]。这就是为什么您不能使用类型为字符串数组的变量调用的原因。

于 2012-07-09T07:06:58.197 回答
-1

字符串数组程序,从用户那里获取字符串:

class Program
{
    static void Main(string[] args)
    {
        int i,j;
        string[] str = new string[10];
        Console.WriteLine("Enter the Name of your friends");
        for (i = 0; i < 10; i++)
        {
            str[i] = Convert.ToString(Console.ReadLine());
            Console.WriteLine("Array["+i+"]="+str[i]);
        }
        Console.ReadLine();
    }
}
于 2013-02-24T12:17:10.403 回答