Экземпляры класса присваиваются друг другу. Низкоуровневый код. Консоль. (!) - 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;