C#console,如何从一个类到另一个类到达已识别的变量?

时间:2018-04-29 09:03:25

标签: c# class interface console

    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)

2 个答案:

答案 0 :(得分:0)

在您的代码中,ks引用了不同的对象,因此其中一个对象的更改不会影响另一个对象。 您可以写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