Как я могу создать двумерный динамический массив длины? - PullRequest
8 голосов
/ 17 июля 2011

Я хочу создать двумерный массив, не зная размера первого измерения.

Например, у меня есть неизвестное количество строк, когда я создаю массив. Каждая строка представляет собой учетную запись. Выход из 4 столбцов для каждой строки: идентификатор, имя, пользователь, пароль

Я пробовал с неровным массивом, но невозможно получить:

int[][] jaggedArray = new int[][3];

Также я искал ArrayList, реализацию с предложениями и немного о Generics.

Я ищу решение, которое позволяет легко манипулировать данными как:

  • добавить в список, выбрать, элементы ввода
  • использование элементов в запросах к базе данных
  • использование в качестве параметров в других функциях

Поскольку я новичок в .NET (C #), пожалуйста, предоставьте мне решения для кода вместо общих (ищите) решений

Ответы [ 3 ]

17 голосов
/ 17 июля 2011

IMO, поскольку «столбцы» фиксированы, объявите класс для этого:

public class Account
{
    public int ID {get;set;}
    public string Name {get;set;}
    public string User {get;set;}
    public string Password {get;set;} // you meant salted hash, right? ;p
}

теперь есть:

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

здесь есть все, что вам нужно:

добавить в список, выбрать, элементы ввода

list.Add и т. Д.

использование элементов в запросах к базе данных использование в качестве параметров в других функциях

расплывчато без дополнительной информации, но вы можете передать либо Account, либо отдельные значения, либо весь список.

2 голосов
/ 17 июля 2011

В .NET нет такого понятия, как массивы динамической длины.Вместо этого используйте List<>.

Все границы массива должны быть известны при создании экземпляра массива.Возможно, вас смутило то, что это выглядит по-разному для зубчатых массивов, но это не так: поскольку это массив массивов, когда вы создаете его экземпляр, он будет массивом необоснованных массивов (например, null ссылок).Затем вам нужно снова выделить каждый из этих массивов, чтобы использовать их.

0 голосов
/ 17 июля 2011

Насколько я знаю, мы не можем создать экземпляр массива, не зная его размера. Почему бы вам не попробовать массив списков? Как это:

List<int>[] a = new List<int>[yourDesireColumnNumber];

С List, добавить, выбрать, элементы ввода тривиально. Если вы хотите указать его в качестве параметра в других функциях, просто определите Type.

...