Экземпляры класса присваиваются друг другу. Низкоуровневый код. Консоль. (!) - C#

Узнай цену своей работы

Формулировка задачи:

На данной стадии развития прохожу конструкторы C#. И чтобы закрепить свои знания, решил написать слету такой низкоуровневый код. Здесь я предполагаю, что s1 пойдет к первому конструктору, т.к. тот принимает только один аргумент. А s2 и s3 пойдут ко второму конструктору, т.к. тот принимает как раз два аргумента. Вроде как, затея удалась, но почему-то экземпляры в каком-то месте присвоились друг к другу, когда они должны были, как я думал, иметь отличные от других значения, по условию, что перед каждым созданием экземпляра, Lookup будет сбрасываться. То есть, я ожидал увидеть -> s1 = 50, s2 = 80, s3 = 55. Но в итоге вышло, что.......-> s1 = 55, s2 = 55, s3 = 55.
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;
        }
    }
}
Скрин вывода -> http://joxi.ru/YmEDbXns16YWr6.jpg Надеюсь, ход моих мыслей понятен, с нетерпением жду ответа. Спасибо!

Решение задачи: «Экземпляры класса присваиваются друг другу. Низкоуровневый код. Консоль. (!)»

textual
Листинг программы
public static int Lookup;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы