You would use contracts because it allows people using your code to use the static analyser to find errors in their code. Additionally you might want to make sure you implemented the Contract.Ensures methods to so that other programmers know what your function guarantees returning.
You would probably use the alternative requires format for your release code.
public void Toto(string parameter)
{
Contract.Requires<ArgumentNullException>(parameter != null);
//...
}
As this version would actually throw the exception if the parameter was null.