Экземпляры класса присваиваются друг другу. Низкоуровневый код. Консоль. (!) - C#
Формулировка задачи:
На данной стадии развития прохожу конструкторы C#.
И чтобы закрепить свои знания, решил написать слету такой низкоуровневый код.
Здесь я предполагаю, что s1 пойдет к первому конструктору, т.к. тот принимает только один аргумент.
А s2 и s3 пойдут ко второму конструктору, т.к. тот принимает как раз два аргумента.
Вроде как, затея удалась, но почему-то экземпляры в каком-то месте присвоились друг к другу, когда они должны были, как я думал, иметь отличные от других значения, по условию, что перед каждым созданием экземпляра, Lookup будет сбрасываться.
То есть, я ожидал увидеть -> s1 = 50, s2 = 80, s3 = 55.
Но в итоге вышло, что.......-> s1 = 55, s2 = 55, s3 = 55.
Скрин вывода -> http://joxi.ru/YmEDbXns16YWr6.jpg
Надеюсь, ход моих мыслей понятен, с нетерпением жду ответа.
Спасибо!
namespace ConsoleApplication2 { class Program { static void Main(string[] args) { Motorcycle s1 = new Motorcycle(50); // Делаю первый экземпляр Мотоцикла - s1 Motorcycle s2 = new Motorcycle(40, 40); // Делаю второй экземпляр Мотоцикла - s2 Console.WriteLine("s1 = {0}, \n\n when s2 = {1} \n\n", s1.GetLoL(), s2.GetLoL()); // Хочу глянуть, как изменился Lookup после вторжения двух экземлпяров // Оказалось, что s1 равен s2 (s1=s2=80), по непонятным, для меня, причинам!? ( когда должно быть s1 = 50, a s2 = 80 ) Motorcycle s3 = new Motorcycle(40, 15); //Теперь создал s3 в отчаянии, чтобы окончательно убедиться в крахе моей теории, в которой s1, s2, s3 не должны между собой быть равны Console.WriteLine("Also, s3 = {0}", s3.GetLoL()); // s3, как и ожидалось, установила правильное значение, но... Console.WriteLine("\n\n\n-----------------------After s3-------------\n\n s1 = {0}, \n\n when s2 = {1} \n\n", s1.GetLoL(), s2.GetLoL()); // (Какое значение в итоге приняли s1, s2, s3 ?) Console.WriteLine("Also, s3 = {0}", s3.GetLoL()); // s1, s2, s3 значения стали равны между собой.. Но почему? Console.ReadLine(); // У каждого ведь должно быть свое число, а не одинаковое? (по крайней мере, я так думаю) } } class Motorcycle { public static int Lookup; public Motorcycle(int balance) // Первый конструктор для s1 { Lookup = balance; } public Motorcycle(int balance, int look) // Второй конструктор для s2 и s3 { Lookup = balance + look; } public int GetLoL() // Вывод числа Lookup, чтобы узнать результат странствия экземпляров класса (s1, s2, s3) { return Lookup; } } }
Решение задачи: «Экземпляры класса присваиваются друг другу. Низкоуровневый код. Консоль. (!)»
textual
Листинг программы
public static int Lookup;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д