Пожалуйста, объясните, как работает этот звонок в отель
Вот выдержка из кода:
using System; <pre> namespace ConsoleApp2 { class Program { class A { int Fa = 1 ; public A() { ++Fa; } public int f { get { return ++Fa; } set { Fa += value; } } } class B : A { static int Fb = 2 ; public B() { Fb++; base.f = 2; } public new int f { get{ return Fb++ ;} set { Fb += value ;} } public override string ToString() { return String.Format("{0}", base.f + f); } } static void Main() { B obj1 = new B(), obj2 = new B(), obj3 = new B(); obj3.f=obj2.f ; Console.Write(obj1); Console.Write(obj1); Console.Write(obj1); } } }
Я не могу понять, что происходит в строке obj3.f=obj2.f
Что я уже пробовал:
Я предположил, что obj2.f вызывает get свойства f, затем выполняется набор и после этого значение набора становится значением в obj3.f, но это не соответствует правильному ответу.
phil.o
Геттер, который изменяет значение, которое он должен вернуть, имеет сильный запах дефекта дизайна.
Richard Deeming
Возможно, ваше замешательство связано с тем, что вы пишете obj1
к пульту три раза? Я подозреваю, что вы хотите написать все три объекта вместо этого.
Но, как сказал Фил, собственность get
который изменяет значение-это "запах кода".
Member 14719149
Ну, это просто тестовое задание, которое я получил однажды, и оно, конечно, "вонючее" и не имеет никакого практического применения, но код написан здесь так, как задумал его автор.