Nano Hash - криптовалюты, майнинг, программирование

Вернуть базовый класс в C#

Как я могу вернуть данные в форме базового класса?

A aclass = new A();
B bclass = aclass.GetB();

не работает.

public class B
{
    protected string str1;
    protected string str2;
}

public class A:B
{
    public A()
    {
         base.str1 = "A";
         base.str2 = "B";
    }

    public B GetB()
    {
        return base;
    }
}
23.01.2013

  • Какая у вас проблема? 23.01.2013
  • Класс = новый A(); B класс = aclass.GetB(); не работает 23.01.2013
  • Что не так с простым использованием B bclass = aclass;? Каждый экземпляр A также является экземпляром B, потому что A является производным от B. 23.01.2013
  • @petre, что ты имеешь в виду под не работает. вы получаете ошибку? 23.01.2013

Ответы:


1

GetB() совершенно не нужен. B bclass = aclass; достаточно, так как aclass уже является B.

23.01.2013

2

Я не эксперт по С#, но return this; должно работать. Хотя я действительно не вижу смысла в этом.

23.01.2013
  • Нет, если я верну это, он итеративно дойдет до бесконечности. 23.01.2013
  • @petre итеративно до бесконечности Что? Столько я. 23.01.2013
  • @petre, что здесь итеративно достигает бесконечности? Опубликуйте остальную часть вашего кода. 23.01.2013

  • 3

    Я настоятельно рекомендую не использовать следующий код и вместо этого изменить поведение вашего класса, но ответ будет следующим:

    public B GetB()
    {
        return this as B;
    }
    

    но вместо написания уникального метода для возврата объекта, приведенного к базовому классу, вы можете использовать следующее:

    public class B
    {
        protected string str1;
        protected string str2;
    }
    
    public class A : B
    {
        public A()
        {
            str1 = "A";
            str2 = "B";
        }
    }
    

    и вы можете использовать как следующее;

    A a = new A();
    B b = a;
    
    23.01.2013
  • Я добавил кастинг явно, так как OP, похоже, не имеет глубоких знаний о С#. 23.01.2013
  • @daryal Это научит его неправильному использованию системы типов. Тот факт, что у него нет глубокого понимания, только делает гораздо более важным, чтобы вы делали это правильно, поэтому он будет подражать правильному поведению. 23.01.2013
  • @daryal: Тем не менее, это не нужно и может привести к неверным выводам. 23.01.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..