Given the following code:
using System;
class MyClass
{
public MyClass x;
}
public static class Program
{
public static void Main()
{
var a = new MyClass();
var b = new MyClass();
a.x = (a = b);
Console.WriteLine(a.x == a);
}
}
The first two lines are very obvious, just two different objects.
I assume the third line to do the following:
- The part
(a = b)assignsbtoaand returnsb, so nowaequalsb. - Then,
a.xis assigned tob.
That means, a.x equals to b, and also b equals to a. Which implies that a.x equals to a.
However, the code prints False.
What's going on?