访问派生类中的基类变量

class Program { static void Main(string[] args) { baseClass obj = new baseClass(); obj.intF = 5; obj.intS = 4; child obj1 = new child(); Console.WriteLine(Convert.ToString(obj.addNo())); Console.WriteLine(Convert.ToString(obj1.add())); Console.ReadLine(); } } public class baseClass { public int intF = 0, intS = 0; public int addNo() { int intReturn = 0; intReturn = intF + intS; return intReturn; } } class child : baseClass { public int add() { int intReturn = 0; intReturn = base.intF * base.intS; return intReturn; } } 

无论我输入什么,我想在子类中访问intF和intS ..但我总是得到两个变量的值0. 0是两个变量的默认值。

任何人都可以告诉我,我怎么能得到价值???

thx in adv ..

是的,Zero是您应该得到的,因为您创建了子类的单个实例并且没有为其inheritance的变量赋值,

 child obj1 = new child(); 

相反,你已经分别实例化了另一个基类实例,并为其成员赋值,

 baseClass obj = new baseClass(); 

运行时基类实例和子实例都是完全不同的对象,因此您应该分别分配子值

 obj1.intF = 5; obj1.intS = 4; 

那么只有你才能得到理想的结果。

你有两个独立的对象 – 这就是问题所在。 obj1引用的对象中的基类变量的值为0,因为它们尚未设置为其他任何值。 没有什么可以将该对象与obj引用的obj

如果需要访问另一个对象的变量,则必须使该对象可供试图访问数据的对象使用。 您可以将obj作为参数传递给方法,也可以将其作为属性。 这里有很多不同的方法,但我们不知道大局是什么 – 你真正想要做什么。 一旦你理解为什么它没有像你期望的那样工作,你就可以开始思考你真正想要做的事情了。

需要明确的是,这与inheritance无关。 它与您创建两个不同的对象有关。 如果您只使用一个类,但是创建了该类的两个不同实例,则会获得相同的效果。