Чтобы помочь вам понять класс в первую очередь.
Класс - это образец того, как будут выглядеть данные. Если бы вы строили дом, например, сначала делали чертежи. Эти отпечатки могут быть использованы для создания многих домов, которые выглядят одинаково. Различия в этих домах различаются в таких областях, как цвет, дерево, кирпич или винил, и если есть ковер или нет. Это всего лишь пример, но давайте превратим этот дом в класс (план), а затем сделаем несколько из этих домов действительными отдельными объектами; наконец, давайте обратимся ко всем из них в одном месте (используя список).
Сначала давайте определимся, каковы наши варианты домов, что выделяет их. Это цвет, внешний вид и с ковром или без. Здесь мы сделаем цвет string
(текст) для простоты, внешний вид как enum
(чтобы параметры были жестко заданы), а ковер или нет bool
(правда или ложь).
Сначала давайте создадим enum
, поскольку он отделен от класса, но используется внутри класса.
public enum Exterior { Brick, Vinyl, Wood }
Теперь давайте создадим класс (план).
public class House
{
public string Color { get; set; }
public Exterior Exterior { get; set; }
public bool HasCarpet { get; set; }
}
Теперь, когда у нас есть план, давайте на самом деле сделаем несколько домов. Когда мы делаем их, нам нужен способ найти их в памяти, чтобы мы присвоили их переменной. Давайте представим, что мы находимся в консольном приложении, и это первые несколько строк основного метода.
var house1 = new House();
var house2 = new House();
var house3 = new House();
Теперь у нас в памяти 3 отдельных дома, и мы можем добраться до любого из них, ссылаясь на house1
, house2
или house3
. Однако эти дома по-прежнему построены одинаково и, к сожалению, не имеют цвета (поскольку строка Color пуста), по умолчанию имеют значение Brick (поскольку первое перечисление - Brick) и не имеют ковра (поскольку значение по умолчанию для HasCarpet равно false).
Мы можем исправить это, ссылаясь на каждую ссылку на объект дома и назначая эти значения следующим образом ...
house1.Color = "Red";
house1.Exterior = Exterior.Wood;
Мы могли бы дать классам конструктор, для начала которого требовались эти значения в качестве параметров, или мы могли бы сделать это более простым способом (встроенный в синтаксис C #).
var house1 = new House()
{
Color = "Red",
Exterior = Exterior.Wood
};
Мы могли бы также дать ему ковер, но так как в этом доме его не будет, и по умолчанию он будет ложным, я оставил его.
Хорошо, допустим, у нас есть все 3 дома, построенные по нашей схеме. Давайте теперь сохраним их вместе в списке. Сначала нам нужно превратить List в объект и ссылаться на него.
var houses = new List<House>();
Теперь давайте добавим дома в список.
houses.Add(house1);
houses.Add(house2);
houses.Add(house3);
Теперь houses
является ссылкой на все наши домашние объекты. Если мы хотим попасть в дом в списке, мы можем использовать индекс (начиная с 0) и получить это место в списке. Допустим, у house2
должен быть ковер, но мы хотим использовать список сейчас, чтобы ссылаться на него. Примечание. Существует довольно много способов ссылки на элементы в списке, этот элементарный.
houses[1].HasCarpet = true;
Я сделал это на своем телефоне, надеюсь, ошибок нет. Я намерен четко ответить на ваш вопрос, обучить и помочь вам лучше понять занятия.