Вернуть базовый класс в 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;
    }
}

3 ответа

Решение

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

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

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

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;
Другие вопросы по тегам