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