Могу ли я получить внука для класса в C #? - PullRequest
0 голосов
/ 20 октября 2011

Я хочу знать, поддерживает ли C # классы внуков или нет. Я хочу сделать следующее:

class Base
{
}

class DerivedFromBase : Base
{
}

class Grandchild : DerivedFromBase //I recieve an error in this class
{
}

В Java я мог бы сделать это, но C # генерирует ошибку в классе Grandchild. Поддерживает ли он только один производный класс?

Ответы [ 4 ]

2 голосов
/ 20 октября 2011

Нет, пожалуйста, опубликуйте свою ошибку.Также обратите внимание, что ваша база уже получена из Object, поэтому DerivedFromBase - внук.

0 голосов
/ 20 октября 2011

C # позволяет это, поэтому не должно быть ошибок.

Я воспроизвел то, что вы показали нам, с некоторым добавленным кодом, и это работает. Так что это должно быть что-то еще, что вызывает ошибку.

Проверьте здесь, это работает:

using System;

public class Test
{
  public static void Main()
  {
      Grandchild g = new Grandchild();
  }
}

class Base
{
    public int i=10;
}

class DerivedFromBase : Base
{
    public DerivedFromBase()
    {
      Console.WriteLine(i);
    }
}

class Grandchild : DerivedFromBase 
{
   public Grandchild()
   {
      Console.WriteLine(i);
   }
}
0 голосов
/ 20 октября 2011

Он поддерживает только один производный класс, но этот класс также может быть производным классом.Так же, как в Java.Ваша проблема в другом месте.

Подготовьте вопрос с минимальным кодом, который воспроизводит вашу ситуацию, и разместите его вместе с выводом компилятора.

0 голосов
/ 20 октября 2011

C # поддерживает (практически) неограниченные уровни деривации.Если вы получаете ошибку, это вызвано чем-то другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...