2015-04-29 4 views
1

Мне нужен мой массив для хранения пары bool и string.Как создать массивы с разными типами

MyType[,] array1 = { {true, "apple"}, {false, "orange"} }; 

// Later in my code. 
for (i = 0; i < array1.Length; i++) 
{ 
    if(array1[i, 0] == true) 
    { 
     Console.WriteLine(array1[i, 1]); 
    } 
} 

Как получить выше в C# без использования коллекции? Если это невозможно, какую коллекцию я должен использовать?

+1

У вас не может быть 2 разных типа в обычных массивах –

+0

Вам нужно будет создать класс/struct для этого. – Abhishek

+0

Возможный дубликат [Определение двухмерного динамического массива с различными типами] (http://stackoverflow.com/questions/1939443/defining-two-dimensional-dynamic-array-with-different-types) –

ответ

3

Массивы не могут иметь разные типы данных. Это принцип проектирования массивов. Вместо этого создайте класс/структуру, а затем создайте массив/список этого класса. Что-то в следующем,

class MyClass 
{ 
bool flag; 
string myStr; 
} 

List<MyCLass> myList=new List<MyClass>(); 
ArrayList arrList = new ArrayList(); //or use this option 

Вы должны быть в состоянии список, используя foreach в C# доступа.

+0

Да, я думал о том, чтобы использовать список но мне нужно остановить цикл при последнем значении массива или списка, так как мне нужно сделать некоторые манипуляции с строками до последнего элемента. Редактировать: причина использования массива - это цикл быстрее, чем список или коллекция. –

+0

Вы можете получить размер списка, используя 'myList.Count', а затем добавить предложение if для последнего элемента во время работы' foreach'. Если вас беспокоит производительность, используйте ArrayList. Соответственно отредактированный ответ: – Abhishek

+0

'ArrayList'? В самом деле? У меня не было никаких тестов, но я могу почти гарантировать, что производительность с «ArrayList» будет хуже, из-за необходимости бокса/распаковки. Лучше использовать либо «Список », либо обычный массив объектов класса. – Tim

Смежные вопросы