Класс и экземпляр
Класс — это описание того, как устроен объект: какие у него данные и что он умеет делать. Сам по себе класс ничего не делает — это чертёж.
Экземпляр — это конкретный объект, созданный по этому чертежу. Именно с ним ты работаешь в коде.
Ты уже работаешь с экземплярами
HtmlElement — это класс. Он описывает, что умеет любой HTML-элемент: SetValue, GetValue, RiseEvent и так далее.
Когда ты пишешь:
var doc = instance.ActiveTab.MainDocument;
var he = doc.FindElementById("input-text");he — это экземпляр класса HtmlElement. Конкретный элемент с конкретной страницы.
Другой элемент — другой экземпляр, но того же класса:
var emailField = doc.FindElementById("input-email");
var phoneField = doc.FindElementById("input-tel");emailField и phoneField — два разных экземпляра одного класса HtmlElement. У каждого свои данные, но одни и те же методы.
Когда создаёшь экземпляр вручную — пишешь new
В ZennoPoster экземпляры HtmlElement и HtmlDocument создаёт сам браузер — ты их только получаешь. Но есть объекты, которые ты создаёшь сам:
var items = new List<string>();
items.Add("Москва");
items.Add("Санкт-Петербург");
items.Add("Екатеринбург");
project.SendInfoToLog("городов: " + items.Count);new List<string>() — создать новый экземпляр класса List<string>. После new всегда идёт имя класса и скобки.
Класс — одна штука, экземпляров — много
var doc = instance.ActiveTab.MainDocument;
// три экземпляра одного класса HtmlElement
var f1 = doc.FindElementById("input-text");
var f2 = doc.FindElementById("input-email");
var f3 = doc.FindElementById("textarea-main");
f1.SetValue("Иван", false);
f2.SetValue("ivan@mail.ru", false);
f3.SetValue("Комментарий", false);Класс HtmlElement один. Объектов f1, f2, f3 — три, у каждого свои данные.