2017-01-20 3 views
-3

Я хочу создать список типов массива. Я не хочу, чтобы создать массив, содержащий значения:C# список типов массивов

array = [a,b]; 

Тогда я хочу поставить этот массив в списке:

List<Array> list = new List<Array>(); 

Я могу сделать это с помощью списка строкового типа, но не повезло с типом массива :

List<String> list = new List<String>(); 

Я из javascript фон, мало знакомы с концепцией коллекций в C#. Кроме того, как я могу создать массив в C#, как мы делаем в JavaScript:

var arrTemp = ["a", "b"]; 
+2

Что вы положить в массив? Вам нужно, например, 'List list;' – Lee

+0

@Lee работает над кодом, который имеет список как тип возврата. Не могу этого изменить. –

+0

Ваш оператор js в C# будет выглядеть как новый Список {"a", "b"} или новый [] {"a", "b"}, но эти ответы опущены: –

ответ

-1

, например, массив строк будет

var arrayOfString = new string[]{"a","b"}; 
// or shorter form: string[] arrayOfString = {"a","b"}; 
// also: var arrayOfString = new[] { "a", "b" } 

А затем создать список-оф-ArrayOfString будет

var listOfArrayOfString = new List<string[]>(); 

Это работает с любым типом, например, если у вас есть класс MyClass

var arrayOfMyClass = new MyClass[]{ ... }; // ... is you creating instances of MyClass 
var list = new List<MyClass[]>(); 
+0

haha, love the downvote. Без разницы. – Jamiec

0

Надеется, что это может помочь вам

var test = new List<int[]>();

0

Ну, так как ваш массив string[]:

var arrTemp = ["a", "b"]; 

вы должны объявить требуемый list в List<string[]>:

// list of string arrays 
List<string[]> list = new List<string[]>() { 
    new string[] {"a", "b"} 
}; 

В случае, если вы хотите, чтобы иметь возможность поставить любой массив в list объявим его как свободно, как это возможно (List<object[]>):

// list of abitrary arrays 
List<object[]> list = new List<object[]>() { 
    new string[] {"a", "b"}, 
    new double[] {123.45, 789.12, 333.55}, 
    new object[] {'a', "bcd", 1, 244.95, true}, 
}; 
0

Вы можете на самом деле создать список массивов:

var listOfArrays = new List<Array>(); 

Проблема заключается в том, что использовать сами массивы сложно, так как тип Array не поддерживает синтаксис массива. (Например, Вы не можете сделать listOfArrays[0][0]) Вместо этого, вы должны использовать метод GetValue, чтобы сделать ваше извлечение:

var obj = listOfArrays[0].GetValue(0); 

Но это другая проблема. Метод GetValue возвращает object, поэтому, когда вы всегда можете применить его к нужному типу, вы теряете безопасность своего типа при выборе этого подхода.

В качестве альтернативы, вы можете просто хранить object[] массивы:

var listOfArrays = new List<object[]>(); 
var obj = listOfArrays[0][0]; 

Но в то время как это решает вопрос о нотации массива, вы теряете безопасность типа.

Вместо этого, если это вообще возможно, я рекомендовал бы найти определенный тип, то просто массивы этого типа:

var listOfArrays = new List<string[]>(); 
string s = listOfArrays[0][0]; 

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

  • Нет связанных вопросов^_^