C # объект или массив

1

Я новичок с С#.

Мне нужно хранить данные в переменной, но я не уверен, что это лучший метод для этого?

Например, если я делаю объект:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }
    //Other properties, methods, events...
}

В коде я могу определить, например

Person person1 = new Person("Leopold", 6);

Но что, если у меня есть 10000 человек, я должен определить их всех (person1, person2 и т.д.)? Думаю, это нехорошо. Могу ли я использовать массив или что-то в этом роде, и как получить того человека, который имеет имя Leopold. Какой лучший способ хранить большую коллекцию данных и иметь хороший доступ для них. (Например, хороший будет, если бы я мог использовать что-то вроде человека [somenumber].name или что-то подобное)

Извините, еще раз я новичок в этом...

Thnx

Теги:
object
arrays

5 ответов

1
Лучший ответ

Мои предложения по вашей проблеме:

List<Person> persons = new List<Person> 
{ 
    new Person("Leopold", 36),
    new Person("Henry", 46),
    new Person("Joe", 56),
    new Person("Harrison", 66) 
};

var findLeopold = persons.Find(p => p.Name == "Leopold"); // find Leopold in list
var firstPerson = persons[0]; // access by person[someNumber]
2

Возможно, вы ищете общий список, который очень прост в использовании.

List<Person> peopleList = new List<Person>();
peoplelist.Add(new Person("Leopold", 6));

И если вы хотите, чтобы человек по имени leopold

Person leopold = peoplelist.FirstOrDefault(person => person.Name == "Leopold");

Это linq, поэтому вы, вероятно, должны это прочитать. Другой альтернативой является использование словаря, который даст вам индексированные запросы, которые вы упомянули.

1

Ну, это зависит от того, что вам нужно, если у вас есть фиксированное количество записей, которые вы можете использовать в массиве, но если вы не уверены в количестве элементов, тогда общий список будет моим выбором. Поскольку вам не нужно заботиться о размере List<T> размер автоматически поддерживается списком по мере добавления или удаления элементов. С другой стороны, arrays фиксированного размера, и вы можете создать новый массив, когда вам нужно сохранить больше элементов, а затем размер массива.

List<Person> personList = new List<Person>();
personList.Add(new Person("AnyName1", 7));
personList.Add (new Person("AnyName2", 4));
1

Вам нужен объект коллекции. Список наиболее универсальный:

List<Person> people = new List<Person>();

Затем вы можете выполнять такие операции:

people.Add(new Person("Bob", 7));
people.Add(new Person("Alice", 4));

В Списке есть много полезных операций. Вот хороший учебник: http://www.dotnetperls.com/list

  • 2
    тебе не хватает некоторых )
0

Вы должны использовать массив только в том случае, если вы можете гарантировать, что определенная граница никогда не будет превышена. Обычно это соответствует только коду с внутренним назначением. Набор бизнес-объектов может накапливаться до любого размера, поэтому вместо этого вы хотите использовать списки. Списки не имеют явной границы, потому что каждый элемент в списке содержит ссылку на следующую, это может продолжаться до тех пор, пока в списке не закончится память.

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

new Person() { Name = "Leopold", Age = 21 };

Поскольку все свойства изменяемы без проверки, нет необходимости использовать свойства, а не поля. Поэтому вы можете использовать это вместо этого:

public class Person
{
    public string Name;
    public int Age;
}

Поскольку этот класс представляет объект реального мира, я назвал поля PascalCase, но не забудьте использовать camelCase для любого другого типа класса. Это всего лишь вопрос соглашения с кодом.

Если вы хотите найти элементы в списке, вы можете использовать следующие методы:

  • найти
  • Найти все
  • Существует

Если вам нужно больше энергии, вам нужен Linq.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню