Я пытаюсь понять, как наследование работает на C#. В принципе, у меня есть базовый класс Base, который имеет простую функцию sayIt. Функция использует свойство «i», которое переопределяется в подклассах. Здесь он переопределяется как 1 из 0. Когда я запускаю эту программу, я получаю «0» как вывод, а не «1», что я и ожидал (потому что в python я бы получил 1). Может ли кто-нибудь объяснить, почему, и что более важно, является ли это шаблоном, который поддерживается на C#?Недоразумение наследования в C#
class Program
{
static void Main(string[] args)
{
Derived d = new Derived();
Console.WriteLine(d.sayIt());
Console.ReadLine();
}
}
class Base
{
int _i = 0;
public int i
{
get { return _i; }
}
public String sayIt()
{
return Convert.ToString(this.i);
}
}
class Derived : Base
{
int _i = 1;
public new int i
{
get { return _i; }
}
}
см http://en.wikipedia.org/wiki/Object_slicing, это не то, что вы хотите сделать без веской причины. – Yaur
Я ничего не добавлю к базе: я просто переопределяю некоторые вещи, поэтому я не открываю себя для нарезки. – guyrt