interface ICar
{
int Speed {get; set;}
}
class IgnitionKey: ICar
{
public int Speed {get; set;}
public void Change ()
{
Speed = 10;
}
}
class GasBrake: IgnitionKey
{
}
static void Main(string[] args)
{
IgnitionKey k = new IgnitionKey();
GasBrake s = new GasBrake();
k.Change();
Console.WriteLine(s.Speed);
Console.ReadLine();
}
这是我的代码。使用更改功能,我将速度值更改为10.但是此速度值属于界面(我猜)。我有一个继承自其他类的第二个类。我希望Speed值等于10。
主要是,如果我使用Console.WriteLine(k.Speed),我可以得到值10.但是当我使用s.Speed时我需要得到这个值。我怎样才能做到这一点 ?有没有办法使用第二类改变第一类的值?
(Sory for bad English)
答案 0 :(得分:0)
在您的代码中,k
和s
引用了不同的对象,因此其中一个对象的更改不会影响另一个对象。
您可以写GasBrake s = k;
以使展位变量引用同一个对象,或者您可以拨打s.Change()
而不是k.Change()
来修改s
答案 1 :(得分:0)
当你这样做时:
GasBrake s = new GasBrake();
或:
IgnitionKey k = new IgnitionKey();
这是一个新创建的对象,它拥有自己分配的内存和它自己的状态,它与另一个完全隔离,并且它们没有任何共享状态。
由于您创建了两个完全不同的对象,因此它们将具有完全不同的状态,它们无法共享状态。为了模仿你想要的东西,你需要使用单个对象但具有不同类型的引用:
GasBrake s = new GasBrake(); // now just one object created
IgnitionKey k = s; // we reference to it using the parent class type
k.Change(); // change it's value
Console.WriteLine(s.Speed); // same value will be printed
现在您将看到相同的值,即 10 。