C# 扩展方法奇怪的行为

C# extension methods odd behavior

我的扩展方法遇到了一个非常奇怪的情况,这是我的示例代码:

AType anObject = new AType();
AType myObject = new AType();
myObject=anObject;
myObject.ExtensionMethods();

在扩展方法之后,我发现 anObject 的属性被更改为 myObject。我不太明白为什么。扩展方法不应该只适用于 myobject 吗?

谢谢。

下面是我的扩展方法

public static AType ExtensionMethods(this AType aType)
{   
    //do something here to aType
    return aType;
}

谢谢。

这与扩展方法无关,而与您在这里所做的一切有关:

myObject=anObject;

在那行之后,两个变量都指向内存中的相同对象实例。因此,对一个变量所做的任何更改都会反映在另一个变量中,因为只有 一个 对象。 (曾经有第二个对象,但是一旦你不再有对它的引用,垃圾收集器就会迅速从内存中清除它。即使没有,你仍然没有对它的引用所以你不能使用它。)