c# - "this"修饰符有问题

标签 c# this

我在 City 类中有这个方法。它应该根据应用该方法的对象创建一个新城市:

 public City newCity(string newCityName, int dX, int dY)
    {
        City c=new City(this); //based on a constructor : City(City c){}

        c.CityName=newCityName;
        c.NoOfNeighborhoods=1;
        c.NumOfResidents=0;
        c.CityCenter.Move(dX,dY);

        return c;
    }

CityCenter 的类型为“Point”,它有两个字段 - x,y。 Point 类中的 Move 方法用于更改 CityCenter 位置。它看起来像这样:

 public void Move(int dX, int dY)
    {
        this.X = x + dX;
        this.Y = y + dY;
    }

发生的事情是新对象 c 和现有的 City 对象都被更改了。我认为“this”修饰符也适用于现有对象......

如何在不导致此行为的情况下利用 Move 方法? 注意:这是一个封闭的API,所以我只能在项目中添加私有(private)方法。

最佳答案

我怀疑 City c=new City(this); 正在创建当前 City 的 克隆,这意味着它们共享同一个 Point 对象(只能是如果 Point 是类而不是结构,则为真)。

你能用 City c=new City(); 代替吗?

关于c# - "this"修饰符有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2859259/

相关文章:

javascript - this 内部嵌套函数

c# - 如何在Docker中运行.NET Core 3.1.3 x86 App

javascript - 将 'this' 传递给类 ecmascript 6 中的回调

c# - 如何用空 td 的元素替换 td

c# - 未调用 Entity Framework 种子

javascript - React 类组件异常 this 对方法的绑定(bind)

c++ - 在 this 关键字上调用函数

javascript - var 不附加到全局

c# - 如何禁用鼠标单击时的对象控制?

c# - 是否可以用新的 Reactive 框架替换 C# 中的传统事件处理?