Добрый день уважаемые читатели! Сегодня мы поработаем с экземплярами класса. Научимся их создавать, заполнять и выводить. C Sharp полноценный объектно-ориентированный язык. Это означает, что любую программу можно представить в виде взаимодействующих и взаимосвязанных между собой объектов. Объекты в свою очередь представляют собой экземпляры класса, с которыми мы сегодня познакомимся.
C Sharp/C# — Экземпляры класса
Прежде чем начать работу с экземплярами класса, необходимо создать и описать сам класс. Сделать это не сложно. Работать будем с консольным приложением. Давайте поставим какую-нибудь задачу, например:
Необходимо запросить у пользователя имя, возраст и попросить ввести сообщение, далее необходимо все это вывести в консоль.
Весьма тривиальная задача, в которой нам можно поработать и с обычными переменными, но мы пойдем более сложным путем, дабы понять как работают экземпляры класса в C Sharp.
Итак у нас есть 3 поля, которые будет заполнять пользователь. Назовем их например так: Author, Age, MessageText. Для лучшего понимания работы с объектами поместим модель в корень нашего консольного приложения. Мы называем моделью — описанный класс, в котором содержатся все необходимые для ввода поля. Давайте назовем нашу модель MessageModel и опишем в ней необходимые поля:
1 2 3 4 5 6 7 8 9 |
public class MessageModel { public string Author { get; set; } public string Age { get; set; } public string MessageText{ get; set; } } |
Весь код нашей программы на данном этапе будет выглядеть так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
using System; namespace ClassObject { internal class Program { public static void Main(string[] args) { } public class MessageModel { public string Author { get; set; } public string Age { get; set; } public string MessageText { get; set; } } } } |
Хорошо. Теперь нам необходимо попросить пользователя ввести свое имя, возраст и текст сообщения. Для этого создадим 3 переменные: userName, userAge и userText. Делаем мы это в методе Main():
1 2 3 4 5 6 |
public static void Main(string[] args) { var userName = Console.ReadLine(); var userAge = Console.ReadLine(); var userText = Console.ReadLine(); } |
Теперь наша программа после запуска будет ожидать ввода пользователя. Но как пользователь поймет какое поле ему необходимо заполнить? Давайте упростим ему задачу и добавим парочку подсказок используя Console.WriteLine:
1 2 3 4 5 6 7 8 9 10 11 |
public static void Main(string[] args) { Console.WriteLine("Введите имя:"); var userName = Console.ReadLine(); Console.WriteLine("Введите имя:"); var userAge = Console.ReadLine(); Console.WriteLine("Введите имя:"); var userText = Console.ReadLine(); } |
Теперь нам необходимо заполнить нашу модель данными, которые ввел пользователь, для этого создадим новую переменную со следующим кодом:
1 2 3 4 5 6 |
var result = new MessageModel { Author = userName, Age = userAge, MessageText = userText }; |
Этим кодом создали новый экземпляр класса MessageModel и записали ссылку на объект в переменную result. Теперь давайте все это выведем в консоль:
1 2 3 |
Console.WriteLine("Автор публикации:" + result.Author); Console.WriteLine("Возраст:" + result.Age); Console.WriteLine("Содержание:" + result.MessageText); |
Как видите мы работаем не с самими классом, а с его экземпляром, ссылка на который была записана в переменную result. Весь наш код выглядит теперь так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
using System; namespace ClassObject { internal class Program { public static void Main(string[] args) { Console.WriteLine("Введите имя:"); var userName = Console.ReadLine(); Console.WriteLine("Введите возраст:"); var userAge = Console.ReadLine(); Console.WriteLine("Введите сообщение:"); var userText = Console.ReadLine(); var result = new MessageModel { Author = userName, Age = userAge, MessageText = userText }; Console.WriteLine("Автор публикации:" + result.Author); Console.WriteLine("Возраст:" + result.Age); Console.WriteLine("Содержание:" + result.MessageText); } public class MessageModel { public string Author { get; set; } public string Age { get; set; } public string MessageText { get; set; } } } } |
Давайте запустим нашу программу.
Новое!
Итог:
В желтой рамке нас попросили ввести информацию, а в зеленой вывели все то, что мы ввели. В дальнейшем некоторые поля мы будем брать из базы данных. Плюс ко всему такой подход позволяет неограниченное количество раз создавать экземпляры класса и оперировать с ними. В свою очередь у вас будет единая модель сообщений например, но с разными данными для каждого пользователя, что позволит не плодить множество переменных для каждого отдельного автора.