Поля
Положите поле int с именем fill внутрь класса Cup. В Pine оставьте Main и постройте один cup через Cup c = new Cup();, сохраните число через c.fill = 3;, затем напишите это поле через Console.WriteLine(c.fill);. Держите оба типа в одном учебном файле, чтобы dotnet run оставался простым. Запустите через dotnet run. На экране должна появиться одна строка: 3. Поле держит данные на том одном объекте. Вы доходите до него через переменную, которая называет объект. Сохранение и чтение этого значения на объекте — то, чему учит эта страница. Публичный стартовый класс оставьте с именем Pine.
Место для данных на объекте
На странице про объекты beep только писал. Он не держал число на потом. Поле — имя, объявленное внутри класса, в котором каждый объект может держать своё собственное значение. После того как new построил объект, вы присваиваете поле через переменную объекта, затем можете написать его на экран.
Откройте файл Pine. Имя стартового класса остаётся Pine. Эта страница стартер не переименовывает. Удалите остаток c.beep();, если именно такой вызов Chip всё ещё занимает весь Main. Удалите любой остаток класса Chip. Удалите любую строку ReadLine. В файле, который вы оставляете, нет ожидания ввода.
Вне фигурных скобок Pine — но всё ещё в том же файле — напишите public class Cup. Внутри фигурных скобок класса напишите одну строку поля: int fill;. В этой первой рамке метода нет. В Cup на этой странице нет Main. Сохраните файл перед запуском.
Первая программа в рамке показывает только Cup, чтобы поле читалось чисто. Вторая программа в рамке — оставляемая форма, где Pine задаёт и пишет fill.
using System;
public class Cup
{
int fill;
}
Pine задаёт fill, затем пишет его
У Pine остаётся public static void Main(). Внутри Main напишите три строки по порядку: Cup c = new Cup();, затем c.fill = 3;, затем Console.WriteLine(c.fill);. Первая строка строит объект. Вторая сохраняет 3 в fill того объекта. Третья пишет сохранённое число. На этой странице вы не вызываете c.beep();. То был урок про объекты.
using System;
public class Pine
{
public static void Main()
{
Cup c = new Cup();
c.fill = 3;
Console.WriteLine(c.fill);
}
}
public class Cup
{
int fill;
}
Прочитайте оставляемый файл сверху. using System; готовит короткие имена. public class Pine — стартер. public static void Main() — место, где среда выполнения начинает работу. new Cup() строит один объект и кладёт его в c. Присваивание c.fill = 3 пишет 3 в поле того объекта. WriteLine(c.fill) читает то же поле и пишет 3. Число на экране — значение, сохранённое на объекте, а не жёстко зашитая печать строки вроде "ok".
Запустите через dotnet run. Программа пишет одну строку и останавливается. Она не ждёт, пока вы что-то наберёте. Если dotnet run ждёт, в файле всё ещё есть ReadLine. Удалите эту строку и оставьте в Pine три строки выше, а поле fill — в Cup. Экран показывает 3. Если экран показывает ok, всё ещё выполняется остаточный вызов c.beep();. Если экран показывает буквы Cup, в строке записи стоят кавычки: Console.WriteLine("Cup");. Не переустанавливайте .NET SDK из‑за экрана с неверной строкой.
Пройдите запуск ещё раз по порядку. C# начинает с Pine.Main. Первый оператор строит один объект через new Cup() и кладёт его в c. Второй сохраняет 3 в c.fill. Третий пишет это поле. Затем Main заканчивается. Имя поля fill объявлено один раз в классе. Каждый объект, построенный из Cup, получает свой собственный слот для этого имени. Когда вы пишете c.fill, вы сначала называете объект, затем слот на том объекте. Этот порядок — объект, затем поле — форма, которую держит эта страница.
Класс, объект и поле рядом
Прочитайте три имени один раз в маленькой таблице. Строка поля на этой странице всегда идёт через объект.
📊 class object field
| Name | What it is on this page |
|---|---|
Cup |
the class / type beside Pine |
c |
one object built with new Cup() |
c.fill |
the int stored on that object |
Написание Cup.fill = 3; без объекта не совпадает с начальной формой этой страницы. Поле принадлежит каждому объекту после new. Сначала постройте, затем присвойте через переменную. Написание только new Cup(); без сохранения результата тоже не оставляет имени для fill. Держите Cup c = new Cup(); затем c.fill = 3;.
Остаточное демо объектов может запутать Main. Файл, который всё ещё вызывает c.beep(); с классом Chip, — это предыдущий урок. Для этой страницы держите Cup и Pine и поле fill. Здесь beep не нужен.
Если написать только Console.WriteLine(c);, экран не покажет чистое 3. Он печатает текст объекта по умолчанию. Чтобы увидеть сохранённое число, напишите Console.WriteLine(c.fill);.
Два cup держат разные fill
Из Cup можно построить два объекта. У каждого свой fill. Изменение одного не меняет другой.
В Pine можете написать Cup a = new Cup(); и Cup b = new Cup();, затем a.fill = 2; и b.fill = 9;, затем написать a.fill и b.fill. После dotnet run экран должен показать 2 на одной строке и 9 на следующей. Оба объекта делят текст класса, который объявляет fill, но каждый объект держит своё число.
Если обе записи показывают одно и то же значение, когда вы хотели два разных числа, проверьте, что вы присвоили оба поля и что не написали Cup b = a;. Эта строка заставляет b ссылаться на тот же объект, что и a, поэтому оба имени делят один fill. На этой странице, когда нужны два отдельных fill, пишите два выражения new Cup().
Для этой практики третья программа в рамке не нужна. Осторожно отредактируйте Pine и запустите снова. Затем можете вернуть рамку с одним cup, если хотите первую форму квиза.
Что конструкторы добавят позже
Эта страница присваивает поле после new отдельной строкой: c.fill = 3;. Позже — на странице конструкторов — будет другой способ задать начальные значения в момент построения объекта. Здесь оставайтесь с простым полем и присваиванием после new. Не изобретайте метод-конструктор на этой странице.
Для полей, которым вы никогда не присваиваете, есть значения по умолчанию: поле int начинается с 0. Если написать c.fill до любого присваивания, экран может показать 0. Эта страница всё же учит присваиванию, которое вы пишете сами, поэтому в основном демо держите c.fill = 3; перед записью.
Не вкладывайте Cup внутрь фигурных скобок Pine. На этой странице два класса в файле — соседи. Поле сидит внутри Cup. Main сидит внутри Pine. Если сборка не находит Cup при компиляции Pine, проверьте, что public class Cup лежит в том же файле. Если экран показывает 0, когда вы ждали 3, строка присваивания может отсутствовать или идти после записи — поставьте c.fill = 3; выше Console.WriteLine(c.fill);.
Вы можете объявить int fill; внутри Cup, построить Cup c = new Cup();, присвоить c.fill = 3; и написать c.fill из Pine.Main. Запустите через dotnet run. Экран показывает 3. Два объекта могут держать два разных fill. Думайте о fill как о подписанном слоте на каждом cup, который вы строите через new. Pine остаётся дверью, которую вы открываете через dotnet run. Следующая страница — конструкторы: там вы начинаете задавать значения в момент, когда new строит объект.
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху