Консоль C #, как добраться до указанной переменной из одного класса в другой класс? - PullRequest
0 голосов
/ 29 апреля 2018
    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. Но это значение скорости принадлежит интерфейсу (я полагаю). У меня есть второй класс, который наследует от другого класса. Я хочу, чтобы значение скорости было равно десяти.

В основном, если я использую Console.WriteLine (k.Speed), я могу получить значение 10. Но мне нужно получить это значение, когда я использую s.Speed. Как я могу это сделать ? Есть ли способ изменить значение первого класса, используя второй класс?

(извините за плохой английский)

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Когда вы делаете:

 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 .

0 голосов
/ 29 апреля 2018

В вашем коде k и s ссылаются на разные объекты, поэтому изменения в одном из них не могут повлиять на другой. Вы можете написать GasBrake s = k;, чтобы переменные кабины ссылались на один и тот же объект, или вы можете вызвать s.Change() вместо k.Change(), чтобы изменить s

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...