Скажем, у меня есть эти классы и переменные
public class Human {
public string name;
}
public class Home {
public Human m_oHuman = null;
public Home(ref Human p_oHuman) { //note the ref
m_oHuman = p_oHuman;
}
//p_oNewHuman takes over the home
public void TakeOver(Human p_oNewHuman) { //don't need ref, just need copy
m_oHuman = p_oNewHuman; //Won't work as intended.
}
}
//Run this code
public Human homeOwner = new Human { name = "Sally" };
public Home home = new Home(ref homeOwner)
public Human homeStealer = new Human { name = "Daisy" };
home.TakeOver(homeStealer);
То, что я пытаюсь сделать, это передать homeOwner
по ссылке и сохранить эту ссылку в глобальной переменной m_oHuman
, а позже я хочу попробовать сделать homeOwner
"указывающей" на homeStealer
или, по крайней мере, копию homeStealer
, поскольку она не передается по ссылке. Но, делая это так, как я закодировал, кажется, что m_oHuman
теряет начальную ссылку, и поэтому homeOwner
все еще «Салли», когда я хочу, чтобы он указывал на p_oNewHuman
.
Я думаю, что вместо m_oHuman = p_oNewHuman;
я должен пройти и скопировать все переменные из p_oNewHuman
в m_oHuman
.
Но с кодом, с которым я действительно работаю, есть много членов и классов, которые я пытаюсь заставить работать, как код выше, и я чувствую, что это может стать громоздким, чтобы вручную копировать объектные переменные. Поэтому мне интересно, был ли лучший или более простой способ достичь этой цели.