public class A { public int i; }public class B { public string s; public A GetA { ????????????????? }} public class C { B b=new B(); b.i=1; b.s="str";A a=b.GetA(); }
如果我没理解错,你是想把B当成A当做参数传入某个函数。答案是:直接把B传入即可。 B b=new B() ......... yourFunc(b);//因为B是A的子类,可以直接传入 另外,如果你要在子类得到父类public或者protected的东西(变量、属性等),可以通过base关键字 例如 public class B : A { public string s; public int Geti { return base.i; }实际上Geti是多余的,因为B会自动继承A所有public的东西,也就是说,虽然B没声明i,但是B中可以自由地使用i,因为i在A中被声明为public LZ的OO概念需要进一步加强
你直接传B的实例就可以了,B是A的子类,B类也是A类,一个A类的引用变量可以指向一个B类对象
如果我没理解错,你是想把B当成A当做参数传入某个函数。答案是:直接把B传入即可。 B b=new B() ......... yourFunc(b);//因为B是A的子类,可以直接传入 这是传了b但是报错啊
{
public string s;
public A GetA
{
get
{
A a = new A();
return a;
}
}
}
我不要新new的A
我要的是当前b中继承的i的值。新new的你如何知道i等于几?
如果我没理解错,你是想把B当成A当做参数传入某个函数。答案是:直接把B传入即可。
B b=new B()
.........
yourFunc(b);//因为B是A的子类,可以直接传入
另外,如果你要在子类得到父类public或者protected的东西(变量、属性等),可以通过base关键字
例如
public class B : A
{
public string s;
public int Geti
{
return base.i;
}实际上Geti是多余的,因为B会自动继承A所有public的东西,也就是说,虽然B没声明i,但是B中可以自由地使用i,因为i在A中被声明为public
LZ的OO概念需要进一步加强
B b=new B()
.........
yourFunc(b);//因为B是A的子类,可以直接传入 这是传了b但是报错啊