初学者:如何正确更新多个 类 中的引用?
Beginner: How to properly update references in several classes?
在我的任务中,我需要在 class 之间创建一个链接数据结构。我遇到的一个问题是,当在另一个 class 中声明引用并稍后在 class 之外更改这些引用时,先前的 class 会忽略更改。示例:
Location location1 = new Location(); // Name null
World world = new World(location1);
location1 = new Location("entrance"); // Name chosen
Console.WriteLine(location1.Name); // output: "entrance"
Console.WriteLine(world.Start.Name); // output: nothing
class World
{
public Location Start {get;set;}
public World (Location start) {Start = start;}
}
class Location
{
public string Name {get;set;}
public Location (); { }
public Location (string name) {Name = name;}
}
正在寻找更新实例的方法,以便正确更新所有引用。
location1 = new Location("entrance");
location1 和 world.Start 指向内存地址。但是,当上面的行是 运行 时,您是在告诉 location1 指向设置新 Location 的不同内存地址。 world.Start 仍然指向以前的地址。
Location location1 = new Location(); // Name null
World world = new World(location1);
location1.Name = "entrance"; // Name chosen
在这里,您实际上是在更新 Name 的值,而不是更改 location1 指向的位置。
https://www.tutorialsteacher.com/csharp/csharp-value-type-and-reference-type
在我的任务中,我需要在 class 之间创建一个链接数据结构。我遇到的一个问题是,当在另一个 class 中声明引用并稍后在 class 之外更改这些引用时,先前的 class 会忽略更改。示例:
Location location1 = new Location(); // Name null
World world = new World(location1);
location1 = new Location("entrance"); // Name chosen
Console.WriteLine(location1.Name); // output: "entrance"
Console.WriteLine(world.Start.Name); // output: nothing
class World
{
public Location Start {get;set;}
public World (Location start) {Start = start;}
}
class Location
{
public string Name {get;set;}
public Location (); { }
public Location (string name) {Name = name;}
}
正在寻找更新实例的方法,以便正确更新所有引用。
location1 = new Location("entrance");
location1 和 world.Start 指向内存地址。但是,当上面的行是 运行 时,您是在告诉 location1 指向设置新 Location 的不同内存地址。 world.Start 仍然指向以前的地址。
Location location1 = new Location(); // Name null
World world = new World(location1);
location1.Name = "entrance"; // Name chosen
在这里,您实际上是在更新 Name 的值,而不是更改 location1 指向的位置。
https://www.tutorialsteacher.com/csharp/csharp-value-type-and-reference-type