Question: ```
    public class AccountMembershipService : IMembershipService
    {
        private readonly MembershipProvider _provider;

        public AccountMembershipService()
            : this(null)
        {
        }

```

I took this bit of code from the AccountModels.cs class automatically created with the MVC3 project.

Can you explain what the 'this(null)' bit is doing?

Answer: 
There is most likely another constructor in your class that looks like this:

```
public AccountMembershipService(MembershipProvider provider)
{
    _provider = provider;
}

```

Your code calls this constructor first and passes `null` as the argument for `provider`, then executes the original constructor.
The above answers are answering the question asked, but to go a bit further:

This is one technique we use for inversion of control and making unit testing possible. 

Here are both constructors

```
public AccountMembershipService()
    : this(null)
{
}

public AccountMembershipService(MembershipProvider provider)
{
    _provider = provider ?? Membership.Provider;
}

```

The first constructor with :this(null) calls your 2nd constructor, passing null to the parameter provider. 

One reason for doing this is to avoid duplication of logic. Suppose you did:

```
public AccountMembershipService()
{
    _provider = Membership.Provider;
}

public AccountMembershipService(MembershipProvider provider)
{
    _provider = provider;
}

```

While perfectly reasonable, if you change the name of \_provider, or perhaps add some other initialization code, you'd have to modify it in 2 places. By calling :this(null), now all your work just happens in one place. 

The reason we have 2 constructors is, by calling the default constructor, the static instance Membership.Provider gets used. Unfortunately it would be very difficult to unit test, because now we have dependencies on the membership providers, on the database, on having valid data, etc. 

Instead, by creating the 2nd constructor, we can now pass in a mock MembershipProvider. This is an entirely different topic though, so if you're interested in how that works, feel free to ask another question.