2016-08-05 1 views
-4

У меня есть зазубренный массив, содержащие другие 1d строковых массивы:Получить массив строки из рваного массива

string[] first = {"one","two"}; 
string[] second = {"three","four"}; 
string[][] jagged = {first,second}; 

Когда я пытаюсь получить подмассивы, они дают нулевое значение (я мог бы быть делать что-то неправильно):

foreach (string[] arr in jagged[][]) { 
    // My stuff here 
} 

ли я что-то неправильно в прогрессе инициализации массива или нужно преобразовать подмассивы каким-то образом?

+5

Какой конкретный код вызывает определенную ошибку? (да, вы можете делать что-то не так, но как мы узнаем, если вы не показываете, что делаете?) – mmcrae

+1

Просто из любопытства: почему вы используете такие массивы, как это, когда .NET имеет намного больше, проще -использовать варианты для коллекций вещей? Это полнофункциональный объектно-ориентированный язык программирования, а не язык сценариев. Воспользуйтесь этим. –

+3

Это даже компилируется? 'foreach (string [] arr in jagged [] [])' не похоже на действительный синтаксис. – sstan

ответ

0

Только часть foreach неверна. Я испытал это, как выглядит следующим образом:

string[] first = { "one", "two" }; 
string[] second = {"three","four"}; 
string[][] jagged = {first,second}; 

foreach (string[] arr in jagged) 
{ 
    Console.WriteLine(string.Join(",", arr)); 
} 

Выход:

один, два

три, четыре

0

Оно должно быть:

foreach (string[] arr in jagged) 
{ 
    // My stuff here 
} 

Я вставил ваш код в свою локальную среду и смог продолжить итерацию.

0

Если вы используете jagged[][] в цикле, то, возможно, вы получите преобразования типа недоставленное сообщение:

Не удается преобразовать тип «символ» в «строка».

Вместо этого используйте jagged в вашей петле.

public class Program 
{ 
    public static void Main() 
    { 
     string[] first = {"one","two"}; 
     string[] second = {"three","four"}; 
     string[][] jagged = {first,second}; 

     foreach (string[] arr in jagged) 
     { 
      //Your code 
     } 
    } 
}