I thought Object.Equals(Object, Object) support bitwise equality and not value equality
<p>Static method <code>Object.Equals(Object, Object)</code> supports reference equality for reference types, and bitwise equality for value types, where with bitwise equality the objects that are compared have the same binary representation, while value equality objects compared have the same value even though they have different binary representations. </p>

<p>For example, since <code>i1</code> and <code>b1</code> are of different types, they don't have the same binary representation and thus <code>Object.Equals(Object, Object)</code> returns <code>false</code>:</p>

<pre><code>        int  i1 = 100;
        byte b1 = 100;
        Console.WriteLine(Object.Equals(i1, b1));//false
</code></pre>

<p><code>Object.Equals(Object, Object)</code> should also return false when comparing <code>d1</code> and <code>d2</code> ( since the two variables have different binary representation of the same value ), but it instead returns <code>true</code>, which suggests that it compares them using value equality: </p>

<pre><code>        decimal d1 = 1.10M;
        decimal d2 = 1.100M;
        Console.WriteLine(Object.Equals(d1, d2)); //true
</code></pre>

<p>Shouldn't <code>Object.Equals(Object, Object)</code> return False when comparing <code>d1</code> and <code>d2</code>? </p>

<p>From <a href="http://msdn.microsoft.com/en-us/library/bsc2ak47.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/bsc2ak47.aspx</a>:</p>

<blockquote>
  <p>For example, consider two Decimal
  objects that represent the numbers
  1.10 and 1.1000. The Decimal objects do not have bitwise equality because
  they have different binary
  representations to account for the
  different number of trailing zeroes.</p>
</blockquote>

<p>thanx</p>
