Я новичок с С#.
Мне нужно хранить данные в переменной, но я не уверен, что это лучший метод для этого?
Например, если я делаю объект:
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
Мои предложения по вашей проблеме:
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]
Возможно, вы ищете общий список, который очень прост в использовании.
List<Person> peopleList = new List<Person>();
peoplelist.Add(new Person("Leopold", 6));
И если вы хотите, чтобы человек по имени leopold
Person leopold = peoplelist.FirstOrDefault(person => person.Name == "Leopold");
Это linq, поэтому вы, вероятно, должны это прочитать. Другой альтернативой является использование словаря, который даст вам индексированные запросы, которые вы упомянули.
Ну, это зависит от того, что вам нужно, если у вас есть фиксированное количество записей, которые вы можете использовать в массиве, но если вы не уверены в количестве элементов, тогда общий список будет моим выбором. Поскольку вам не нужно заботиться о размере List<T>
размер автоматически поддерживается списком по мере добавления или удаления элементов. С другой стороны, arrays
фиксированного размера, и вы можете создать новый массив, когда вам нужно сохранить больше элементов, а затем размер массива.
List<Person> personList = new List<Person>();
personList.Add(new Person("AnyName1", 7));
personList.Add (new Person("AnyName2", 4));
Вам нужен объект коллекции. Список наиболее универсальный:
List<Person> people = new List<Person>();
Затем вы можете выполнять такие операции:
people.Add(new Person("Bob", 7));
people.Add(new Person("Alice", 4));
В Списке есть много полезных операций. Вот хороший учебник: http://www.dotnetperls.com/list
Вы должны использовать массив только в том случае, если вы можете гарантировать, что определенная граница никогда не будет превышена. Обычно это соответствует только коду с внутренним назначением. Набор бизнес-объектов может накапливаться до любого размера, поэтому вместо этого вы хотите использовать списки. Списки не имеют явной границы, потому что каждый элемент в списке содержит ссылку на следующую, это может продолжаться до тех пор, пока в списке не закончится память.
Также используйте только конструкторы для классов с поведением, для таких классов требуется только несколько аргументов для инициализации. Классы с единственной целью переноса данных могут содержать произвольное количество полей для описания чего-либо, передача аргумента для каждого поля происходит медленно и выглядит нечитабельно, поэтому вместо этого используйте это обозначение:
new Person() { Name = "Leopold", Age = 21 };
Поскольку все свойства изменяемы без проверки, нет необходимости использовать свойства, а не поля. Поэтому вы можете использовать это вместо этого:
public class Person
{
public string Name;
public int Age;
}
Поскольку этот класс представляет объект реального мира, я назвал поля PascalCase, но не забудьте использовать camelCase для любого другого типа класса. Это всего лишь вопрос соглашения с кодом.
Если вы хотите найти элементы в списке, вы можете использовать следующие методы:
Если вам нужно больше энергии, вам нужен Linq.
)