extensions and conflict between decimal & double
<p>i'm not sure if it's just me, but this seems a little weird. I have some extensions in a static class for rounding values:</p>

<pre><code>    public static double? Round(this double? d, int decimals)
    {
        if (d.HasValue)
            return Math.Round(d.Value, decimals, MidpointRounding.AwayFromZero);
        return null;
    }
    public static double? Round(this double d, int decimals)
    {
        return Math.Round(d, decimals, MidpointRounding.AwayFromZero);
    }
</code></pre>

<p>i recently added the same for rounding decimals:</p>

<pre><code>    public static decimal? Round(this decimal? d, int decimals)
    {
        if (d.HasValue)
            return Math.Round(d.Value, decimals, MidpointRounding.AwayFromZero);
        return null;
    }
    public static decimal? Round(this decimal d, int decimals)
    {
        return Math.Round(d, decimals, MidpointRounding.AwayFromZero);
    }
</code></pre>

<p>i hope no-one can see anything wrong with this, at this point. It appears when i have the code</p>

<pre><code>        var x = (decimal)0;
        var xx = x.Round(0);
</code></pre>

<p>the CLR throws the error <strong>Member 'decimal.Round(decimal)' cannot be accessed with an instance reference; qualify it with a type name instead</strong></p>

<p>WTF? If i simply rename my decimal rounding extension (for instance call it RoundDecimal), everything works fine. It seems as though the CLR somehow is confusing the double and the decimal methods.. can anyone explain this?</p>

<p>Interestingly, if I call Round(x, 0) instead, it works fine...</p>
