<p>Have you ever tried this before?</p>

<pre><code>static void Main(string[] args)
{
    int x = 10;
    x = x++;
    Console.WriteLine(x);
}
</code></pre>

<p>Output: 10.</p>

<p>but for </p>

<pre><code>static void Main(string[] args)
{
    int x = 10;
    x++;
    Console.WriteLine(x);
}
</code></pre>

<p>Output: 11.</p>

<p>Could anyone explain why this?</p>

X++ will increment the value, but then return its old value.
So in this case:
```
```
static void Main(string[] args)
{
    int x = 10;
    x = x++;
    Console.WriteLine(x);
}
```
```
You have X at 11 just for a moment, then it gets back to 10 because 10 is the return value of (x++).
You could instead do this for the same result:
```
```
static int plusplus(ref int x)
{
  int xOld = x;
  x++;
  return xOld;
}

static void Main(string[] args)
{
    int x = 10;
    x = plusplus(x);
    Console.WriteLine(x);
}
```
```
It is also worth mentioning that you would have your expected result of 11 if you would have done:
```
```
static void Main(string[] args)
{
    int x = 10;
    x = ++x;
    Console.WriteLine(x);
}
```
```