none
C# - присваивание переменных экземпляра одного класса значения переменных экземпляра другого класса RRS feed

  • Вопрос

  • Добрый день!

    Подскажите, пожалуйста, какое есть средство, позволяющее уменьшить код.

    Есть два класса:

    public class C1 {
       int a;
       int b;
       int c;
    }
    
    public class C2 {
       int b;
       int c;
       int d;
    }
    
    C1 c1_class = new C1();
    C2 c2_class = new C2();
    
    c1_class.a = 1;
    c1_class.b = 2;
    c1_class.c = 3;

    Мне надо сделать так, чтобы c2_class.b ==2, c2_class.c=3.

    Сделать с2_class = c1_class нельзя. Приходится по всем переменным проходиться вручную.Наверняка есть средство, которое принудительно проверяет наличие переменной класса, и в случае его наличия присваивает значение. Так ведь?


    24 июня 2014 г. 7:37

Ответы

  • Добрый день.

    Нет, такого механизма нет. Автоматизированно для любых классов можно кончено написать метод самому, но это будет на основе Reflection и нужно понимать, нужен ли такой метод...

    • Предложено в качестве ответа YatajgaEditor 24 июня 2014 г. 9:20
    • Помечено в качестве ответа Persoff 24 июня 2014 г. 11:21
    24 июня 2014 г. 8:44
    Отвечающий
  • public class C {
       int c;
       int b;
    }
    
    public class C1 {
       int a;
       C items;
    }
    
    public class C2{
       int d;
       C items;
    }
    
    C1 c1_class = new C1();
    C2 c2_class = new C2();
    
    C c_class = new C();
    c1_class.items = c_class;
    c2_class.items = c_class;
    
    c1_class.a = 1;
    c_class.b = 2;
    c_class.c = 3;

    Можешь объект в конструктор вынести


    Mak Arti


    24 июня 2014 г. 8:50

Все ответы

  • Добрый день.

    Нет, такого механизма нет. Автоматизированно для любых классов можно кончено написать метод самому, но это будет на основе Reflection и нужно понимать, нужен ли такой метод...

    • Предложено в качестве ответа YatajgaEditor 24 июня 2014 г. 9:20
    • Помечено в качестве ответа Persoff 24 июня 2014 г. 11:21
    24 июня 2014 г. 8:44
    Отвечающий
  • public class C {
       int c;
       int b;
    }
    
    public class C1 {
       int a;
       C items;
    }
    
    public class C2{
       int d;
       C items;
    }
    
    C1 c1_class = new C1();
    C2 c2_class = new C2();
    
    C c_class = new C();
    c1_class.items = c_class;
    c2_class.items = c_class;
    
    c1_class.a = 1;
    c_class.b = 2;
    c_class.c = 3;

    Можешь объект в конструктор вынести


    Mak Arti


    24 июня 2014 г. 8:50
  • Здравствуйте! Я как понял вам нужно применить наследование.


    То что вы показываете, это не наследование.
    24 июня 2014 г. 8:52
    Отвечающий
  • я извиняюсь, забыл эту строку удалить)

    Mak Arti

    24 июня 2014 г. 8:54