В университете, когда я делал большинство вещей под Unix Солярис, я использовал gdb.
Однако я пошел бы с valgrind в соответствии с Linux.
Нет никаких средств сделать это автоматически встроенными в язык ...
Один из вариантов - добавить конструктор к классу B, который принимает класс A в качестве аргумента.
Тогда вы можете сделать:
B newB = new B(myA);
В этом случае конструктор может просто скопировать соответствующие данные по мере необходимости.
Создайте ctor в B, который позволяет передавать объект типа A, затем скопируйте поля A и установите поля B.
Я бы добавил конструктор копирования в A, а затем добавил новый конструктор в B, который берет экземпляр A и передает его конструктору копии базы.
Нет, вы не можете этого сделать. Один из способов добиться этого - добавить конструктор в классе B, который принимает параметр типа B, и добавить данные вручную.
Таким образом, вы можете получить что-то вроде этого:
public class B
{
public B(A a)
{
this.Foo = a.foo;
this.Bar = a.bar;
// add some B-specific data here
}
}
Вы можете создать метод Convert для класса B, который принимает базовый класс.
public ClassB Convert(ClassA a)
{
ClassB b = new ClassB();
// Set the properties
return b;
}
У вас также может быть конструктор для ClassB, принимающий объект ClassA.