如何在C#中创建对System.Array持有字符串的引用

时间:2012-07-09 07:03:07

标签: c# string visual-studio-2010 mono system.array

我有一个关于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'

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

2 个答案:

答案 0 :(得分: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作为参数;它可以将变量设置为任何其他Array。不一定是字符串数组,它可以是int []。这就是为什么你不能用一个类型为String的变量调用。

答案 1 :(得分:-1)

String Array程序,从用户获取字符串:

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();
    }
}