Comparing Equals() method from MSDN
I like my implementation as it's much more succinct


Which isn't necessarily a good thing: we care about readable code, not about oneliners. It means we don't use 5 lines to write what can be written in 1 line but it also means we don't cram 5 lines in 1 line just for the sake of it.

That being said: your implementation does the same as the example. I would also prefer your example since it keeps the equality logic in one method Equals(T) rather than duplicating it.

Some comments however:


There's no point in doing this cast: (object)p != null
You might as well implement IEquatable&lt;T&gt; MSDN
There should be no performance difference unless you have an unusual amount of null arguments to Equals(object) that will now go through the as statement before being caught by the null check
Equals(T) will probably be inlined anyway