Checking for null in delivery functions In my Repository class:

public class DeliveryRepository : IDeliveryRepository
{
    private readonly List&lt;Delivery&gt; deliveries = new List&lt;Delivery&gt;();

    public Delivery Add(Delivery item)
    {
        if (item == null)
        {
            throw new ArgumentNullException("item");
        }
        deliveries.Add(item);
        return item;
    }
}


...I could implement my Add() method this way:

public Delivery Add(Delivery item)
{
    Contract.Requires(item != null);
    deliveries.Add(item);
    return item;
}


...or this way instead:

public Delivery Add(Delivery item)
{
    Contract.Requires&lt;ArgumentNullException&gt;(item != null, "item");
    deliveries.Add(item);
    return item;
}


Which of the three is best? Does it matter? Just a matter of style/preference?

Are they 2 of one, a pair of the other, and a couple of the third?
If you are addressing Code Contracts specifically then you should adopt a programming style that reinforces exception handling policy in release build, i.e. whether you require argument validation at runtime and whether Code Contracts will be part of release build or not.

I suggest taking a look at this diagram (copied from Code Contracts user documentation) and consult it with your team.