C# Строковый массив внутри массивов int - PullRequest
0 голосов
/ 06 апреля 2020

Мне нужны array из integer arrays и string в C#

[
    ["Item 1",[1,2,3,4,5,6]],
    ["Item 1",[1,2,3,4,5,6]],
    ["Item 1",[1,2,3,4,5,6]],
    ["Item 1",[1,2,3,4,5,6]]
]

Я не могу придумать ни одного правильного возможного подхода к этой проблеме. Я пришел к этому фрагменту ниже.

string[,] items = new string[10, 2];
for(int 1 = 0; i<10; i++){
    items[i, 0] = "Item " + i;
    items[i, 1] = new int[10];
}

Как получить нужный мне массив?

Ответы [ 3 ]

1 голос
/ 06 апреля 2020

Вы можете создать класс, подобный этому

public class Test
{
    public string Name { get; set; }
    public int[] Array { get; set; }
}
List<Test> testList = new List<Test>();
for (int i = 0; i < 4; i++)
{
    Test test = new Test
    {
        Name = "Item 1",
        Array = new int[6]
    };
    for (int j = 0; j < 6; j++)
    {
        test.Array[j] = j + 1;
    }
    testList.Add(test);
}
foreach (var item in testList)
{
    Console.Write(item.Name);
    foreach (var arr in item.Array)
    {
        Console.Write("\t" + arr);
    }
    Console.WriteLine();
}

Результат

Item 1  1       2       3       4       5       6
Item 1  1       2       3       4       5       6
Item 1  1       2       3       4       5       6
Item 1  1       2       3       4       5       6

1 голос
/ 06 апреля 2020

используйте словарь.

Dictionary<string, int[]> myDictionary = new Dictionary<string, int[]>();

// Add Item:
myDictionary.Add("Item 1", new int[]{1,2,3,4,5,6});

Помните, что ключ (строка) должен быть уникальным, если вы используете словарь.

или используйте кортежи:

Tuple<string, int[]>[] myTuples = new Tuple<string, int[]>[5];
myTuples[0] = new Tuple<string, int[]>("Item 1", new int[] { 1, 2, 3, 4, 5, 6 });
// Access string with: myTuples[0].Item1
// Access int[]  with: myTuples[0].Item2

Или, начиная с C # 7.0, вы можете использовать именованные кортежи:

(string MyString, int[] MyIntArray)[] myTuples = new (string MyString, int[] MyIntArray)[5];
myTuples[0] = ("Item1", new int[]{1,2,3,4,5,6});

// Access string with: myTuples[0].MyString
// Access int[]  with: myTuples[0].MyIntArray
0 голосов
/ 06 апреля 2020

Вы можете создать массив кортежей:

(string,int[])[] items = new (string,int[])[10];
for(int i = 0; i < items.Length; i++)
 {
 items[i] = ("Item" + i,new int[10]);
 }

Вы можете получить доступ к значениям с помощью .Item1 и .Item2:

  Console.WriteLine(items[4].Item1); // will output "Item 4"
  Console.WriteLine(items[4].Item2[4]); // will output the 4th value of the 4th array

Чтобы еще больше повысить читаемость, вы можете создать свой собственный класс и сделать массив этого класса:

class Item
 {
 public string Name {get;set;}
 public int[] Values {get;set;}
 }
...