Как использовать метод, который возвращает 2d System.Array (не string[,]) в C#?

Я использую такую ​​строку:

Array stringArray = Array.CreateInstance(typeof(String), 2, 2);

использовать метод, который возвращает 2D System.Array с моей переменной stringArray. Однако stringArray = MyClassInstance.Work(...,... ...); не заполнен возвращаемым массивом этой функции.

Как мне определить переменную моей коллекции, чтобы ее можно было присвоить возвращаемому значению метода, который возвращает значение строкового массива 2D System.Array?

Спасибо

2 ответа

Решение

Array.CreateInstance возвращает Arrayбез указания его размера и длины (но в любом случае это System.Array который является базовым классом всех массивов в C#). В большинстве случаев возвращаемый массив из метода больше похож на:

public string[] MyMethod()
{
}
public int[,] Another(int something)
{
}

string[] theStringResult = MyMethod();
int[,] theIntResult = Another(1);

На вашем 2D-массиве:

Array.CreateInstance(typeof(String), 2, 2);

Это возвращает string[,] приведение к Array, Это идентично (Array)(new string[2,2]), Таким образом, вы можете привести его к string[,] если ты хочешь.

Но почему вы хотите использовать это в любом случае? Разве вы не можете просто использовать string[,] вместо? Разве вы не знаете, что тип элемента string во время компиляции? Возможно сделать в общем параметре.

По твоей чрезмерной проблеме:

Однако stringArray = MyClassInstance.Work(...,... ...); не заполнен возвращаемым массивом этой функции.

Мы не сможем помочь вам с этой частью проблемы, если вы не разместите код там, где это происходит. Кажется, что MyClassInstance.Work не возвращает созданный вами экземпляр массива. Но если вы не покажете код с ошибкой, я не могу сказать вам, где он находится.

Другие вопросы по тегам