Как создать ссылку на System.Array, содержащий строки в C#
У меня есть интересный вопрос относительно кода 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 ответа
Измените тип вашей переменной на 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[]. Вот почему вы не можете вызвать переменную с типом Array of string.
Программа 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();
}
}